我正在使用HtmlUnit 2.10点击一个链接,该链接触发重定向到另一个URL的JavaScript。 JavaScript使用window.location来重定向。结果与我直接使用URL打开页面的结果不同。重定向页面结果看起来好像页面仍在加载,尽管它不是。
当查看发送的请求时,看起来好像HtmlUnit请求页面,甚至从我试图重定向到的页面发送ajax-requests,但是没有显示它。我已经尝试将IO写“page.asXml()”写入.html文件以获取页面的预览,它几乎不包含任何内容,就像它仍在加载新内容一样。但是,我也尝试等待最多100秒的页面加载
synchronized (page) {
page.wait(int x);
}
并且它对结果没有任何影响。
我无法为此错误提供可重现的脚本,因为该页面目前仅在本地运行。
关于什么可能出错的任何想法?
编辑:我可以补充一点,这个问题似乎是从jQuery 1.7.0升级到jQuery 1.8.1而来的。
答案 0 :(得分:0)
我仍然没有清楚地知道如何彻底解决你的问题,但我已经假设如何更深入地调查你的问题(即你是否已被正确地重定向): 使用cssSelector或xpath在要重定向的页面上本地化1-2个元素。 然后重定向调用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; } ;
你可以阅读流利的等待here
如果它返回您已重定向到的页面上的网页元素。否则它会失败。 希望这能以某种方式帮助你。
答案 1 :(得分:0)
确保已将WebClient设置为将redirectEnabled
字段设置为true
。要执行此操作,只需在执行请求之前添加此行...
webClient.setRedirectEnabled(true);
这将确保HtmlUnit客户端遵循重定向。
该方法