我使用HtmlUnit 2.10单击一个链接,该链接触发重定向到另一个JavaScript的JavaScript。JavaScript使用window.location重定向。结果与我直接用URL打开页面的结果不同。重定向页面的结果看起来好像页面仍然在加载,尽管它不是。
当查看发送的请求时,看起来好像HtmlUnit请求页面,甚至从我试图重定向的页面发送ajax请求,但没有显示出来。我尝试过将"page.asXml()“写入到.html文件中,以获得页面的预览,其中几乎没有包含任何内容,就好像它仍然在加载新内容一样。但是,我也试着等待长达100秒钟的时间来加载页面
synchronized (page) {
page.wait(int x);
}
这对结果没有任何影响。
我不能为这个错误提供一个可复制的脚本,因为该页面目前只在本地运行。
对什么会出错有什么想法吗?
编辑:我可以补充说,当从jQuery 1.7.0.升级到jQuery 1.8.1时,这个问题似乎就出现了。
发布于 2012-09-11 16:53:34
我仍然不清楚如何完全解决您的问题,但我已经假设如何更深入地研究您的问题(即您是否被正确地重定向):将页面上的1-2个元素本地化(您希望使用cssSelector或xpath重定向)。然后重定向调用fluentWait()
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
你可以读到关于流利等待这里的文章
如果它返回被重定向到的页面上的web元素。否则就失败了。希望这能帮到你。
发布于 2012-09-11 17:02:03
确保已经将WebClient设置为将it's redirectEnabled
字段设置为true
。要做到这一点,只需在执行请求之前添加这一行.
webClient.setRedirectEnabled(true);
这将确保HtmlUnit客户端遵循重定向。
这是文件表示该方法。
https://stackoverflow.com/questions/12369083
复制相似问题