Tar*_*ken 14 javascript java ajax selenium htmlunit-driver
我遇到了以下问题:我正在使用HtmlUnitDriver和Browserversion Firefox_3_6运行带有Selenium 2.9的JUnit testCase.JavaScript已启用.现在,当它应该调用并执行以下javaScript函数时,它什么都不做:
function openIdsDocument()
{
var windowBounds = getWindowBounds();
var XMLHTTP = getAjaxRequestObject("XYZ.do?availableWidth="+windowBounds.width+"&availableHeight="+windowBounds.height, "", true);
if (XMLHTTP != null)
{
XMLHTTP.onreadystatechange = function alertAJAXResponse()
{
if (XMLHTTP.readyState == 4)
{
window.location.href = getContextPath() + "ABC.do";
}
};
XMLHTTP.send("timestamp=" + <%=System.currentTimeMillis()%>);
}
getLoadingState();
}
Run Code Online (Sandbox Code Playgroud)
我想去ABC.do
如果我使用FirefoxDriver执行我的测试,它可以工作.
有没有办法让这个使用HtmlUnitDriver?如果我手动调用driver.get(" http://host/ABC.do "),我的测试工作,但这不是正确的方法.
San*_*Lee 21
您可以通过执行任一操作来启用JavaScript
new HtmlUnitDriver(true);driver.setJavascriptEnabled(true);你需要做的是等到之后执行JavaScript get(url).
您可以使用Thread.sleep()方法添加一些延迟.
HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6);
driver.setJavascriptEnabled(true);
driver.get(url);
Thread.sleep(100);
runTest();
Run Code Online (Sandbox Code Playgroud)
更新
作为@Corey在评论中指出的,它可能是更好的使用显性和隐性等待代替Thread.sleep().因为我现在不使用它们,但我无法证实.如果有人测试它们并更新这个答案会很棒.
您需要初始化HtmlUnitDriverwith enable javascripttrue
new HtmlUnitDriver(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19656 次 |
| 最近记录: |