0

我正在使用 HtmlUnit 2.10 单击一个链接,该链接触发一个重定向到另一个 URL 的 JavaScript。JavaScript 使用 window.location 进行重定向。结果和我直接用网址打开页面是不一样的。重定向页面结果看起来好像页面仍在加载,但实际上并非如此。

在查看发送的请求时,它看起来好像 HtmlUnit 请求页面,甚至从我试图重定向到的页面发送 ajax 请求,但没有显示它。我已经尝试将“page.asXml()” IO 写入 .html 文件以获取页面的预览,它几乎不包含任何内容,就好像它仍在加载新内容一样。但是,我也尝试等待最多 100 秒以加载页面

synchronized (page) {
   page.wait(int x);
}

它对结果没有任何影响。

我无法为此错误提供可重现的脚本,因为该页面目前仅在本地运行。

有什么想法可能是错的吗?

编辑:我可以补充一点,这个问题似乎是从 jQuery 1.7.0 升级到 jQuery 1.8.1 时出现的。

4

2 回答 2

0

确保您已将 WebClient 设置为将其redirectEnabled字段设置为true. 为此,只需在执行请求之前添加此行...

webClient.setRedirectEnabled(true);

这将确保 HtmlUnit 客户端遵循重定向。

这是该方法的文档

于 2012-09-11T17:02:03.683 回答
0

我仍然不清楚如何完全解决您的问题,但我有一个假设如何更深入地调查您的问题(即您是否已正确重定向):在您的页面上本地化 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-11T16:53:34.673 回答