1

在测试 ajax 页面时,如何等待页面加载是一个挑战。
我在网上找到的方法是明确等待某个元素加载。

htmlunit中还有另一种方式,就是将所有异步javascript转换为同步javascript。

 client.setAjaxController(new NicelyResynchronizingAjaxController());

这更通用,因为我们不需要确切知道要等待哪个元素。
有没有办法用firefoxdriver实现这个。

4

1 回答 1

2

这就是您可以等待在 Ajax 请求之后加载到 DOM 中的特定元素的方式。

假设您有以下内容:

<div id="postAjaxRequest">This only appears after something request me!</div>

您所要做的就是使用 startWebDriverWebDriverWaitelement 如下:

WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 10); // Starts a wait of a maximum 10 seconds.

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("postAjaxRequest")));
driver.findElement(By.id("postAjaxRequest")).click(); // or any other action

这是我能解释的最简单的。

于 2013-05-23T17:47:20.223 回答