在测试 ajax 页面时,如何等待页面加载是一个挑战。
我在网上找到的方法是明确等待某个元素加载。
htmlunit中还有另一种方式,就是将所有异步javascript转换为同步javascript。
client.setAjaxController(new NicelyResynchronizingAjaxController());
这更通用,因为我们不需要确切知道要等待哪个元素。
有没有办法用firefoxdriver实现这个。
在测试 ajax 页面时,如何等待页面加载是一个挑战。
我在网上找到的方法是明确等待某个元素加载。
htmlunit中还有另一种方式,就是将所有异步javascript转换为同步javascript。
client.setAjaxController(new NicelyResynchronizingAjaxController());
这更通用,因为我们不需要确切知道要等待哪个元素。
有没有办法用firefoxdriver实现这个。
这就是您可以等待在 Ajax 请求之后加载到 DOM 中的特定元素的方式。
假设您有以下内容:
<div id="postAjaxRequest">This only appears after something request me!</div>
您所要做的就是使用 startWebDriver
和WebDriverWait
element 如下:
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
这是我能解释的最简单的。