-
-
Notifications
You must be signed in to change notification settings - Fork 184
Open
Labels
good first issueGood for newcomersGood for newcomers
Description
I wrote the problem in StackOverflow at:
https://stackoverflow.com/questions/42538839/how-do-i-click-on-a-row-in-a-jquery-datatable-using-htmlunit
I have a unit test that can be used which directly accesses my website with an example web page. That source code is below.
(import java.io.IOException;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSpan;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTableBody;
import com.gargoylesoftware.htmlunit.html.HtmlTableRow;
/**
* @author gary_kephart
*
*/
public class DataTablesTestCase
{
private static final long BG_JS_WAIT_MS = 15000;
private static final String TEST_PAGE_URL = "http://photeus.com/campaigner-data/";
private WebClient webClient;
public HtmlPage getPage(
String url) throws Exception
{
HtmlPage htmlPage = this.webClient.getPage(url);
this.webClient.waitForBackgroundJavaScriptStartingBefore(BG_JS_WAIT_MS);
return htmlPage;
}
/**
* @param domElement
* @return
* @throws IOException
*/
public HtmlPage clickOn(
DomElement domElement) throws IOException
{
HtmlPage htmlPage = domElement.click();
htmlPage.getWebClient().waitForBackgroundJavaScript(BG_JS_WAIT_MS);
return htmlPage;
}
@SuppressWarnings("unchecked")
protected <E extends HtmlElement> E getElementById(
HtmlElement parent,
String tagName,
String id)
{
return (E)parent.getElementsByAttribute(tagName, "id", id).get(0);
}
)
@Before
public void setUp()
{
this.webClient = new WebClient();
this.webClient.getOptions().setCssEnabled(true);
this.webClient.getOptions().setJavaScriptEnabled(true);
this.webClient.getOptions().setTimeout(0);
this.webClient.getOptions().setUseInsecureSSL(true);
}
@Test
public void testSuccess() throws Exception
{
HtmlPage htmlPage = getPage(TEST_PAGE_URL);
Assert.assertEquals("Campaigner Data - Home", htmlPage.getTitleText());
HtmlDivision div = getElementById(htmlPage.getBody(), HtmlDivision.TAG_NAME,
"elections_wrapper");
HtmlTable table = getElementById(div, HtmlTable.TAG_NAME, "elections");
List<HtmlTableBody> bodies = table.getBodies();
HtmlTableBody body = bodies.get(0);
List<HtmlTableRow> bodyRows = body.getRows();
HtmlTableRow tableRow = bodyRows.get(0);
HtmlPage htmlPage2 = clickOn(tableRow);
Assert.assertEquals("Campaigner Data - HtmlUnit Datatable Row Test", htmlPage2.getTitleText());
HtmlSpan elementIdSpan = getElementById(htmlPage2.getBody(), HtmlSpan.TAG_NAME, "elementId");
String elementId = elementIdSpan.asText();
Assert.assertNotNull(elementIdSpan);
Assert.assertNotNull(elementId);
}
}
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomers