我遇到了以下问题: 我正在使用带有浏览器版本 Firefox_3_6 的 HtmlUnitDriver 使用 Selenium 2.9 运行 JUnit 测试用例。 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();
}
我想去ABC.do
如果我使用 FirefoxDriver 执行我的测试,它会工作。
有没有办法让它与 HtmlUnitDriver 一起工作? 如果我手动调用 driver.get("http://host/ABC.do "),我的测试会成功,但这不是执行此操作的正确方法。
最佳答案
您可以通过执行以下任一操作来启用 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();
更新
正如@Corey 在评论中指出的那样,使用 Explicit and Implicit Waits 可能会更好而不是 Thread.sleep()
。由于这些天我不使用它们,所以我无法确认。如果有人测试它们并更新此答案,那就太好了。
关于java - 为什么 HtmlUnitDriver 不执行 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926246/