【问题标题】:selenium firefoxdriver - wait for ajaxselenium firefoxdriver - 等待ajax
【发布时间】:2013-05-23 14:20:14
【问题描述】:
在测试 ajax 页面时,如何等待页面加载是一个挑战。
我在网上找到的方法是明确等待某个元素加载。
htmlunit中还有一种方式,就是将所有异步javascript转换为同步javascript。
client.setAjaxController(new NicelyResynchronizingAjaxController());
这更通用,因为我们不需要确切知道要等待哪个元素。
有没有办法用 firefoxdriver 来实现。
【问题讨论】:
标签:
selenium-webdriver
selenium-firefoxdriver
【解决方案1】:
这就是在 Ajax 请求之后等待特定元素加载到 DOM 中的方法。
假设你有以下:
<div id="postAjaxRequest">This only appears after something request me!</div>
您所要做的就是使用一个开始的WebDriver 和WebDriverWait 元素,如下所示:
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
这是我能解释的最简单的。