Селен Firefoxdriver - ждать AJAX
При тестировании страницы AJAX возникает проблема, как дождаться загрузки страницы.
То, как я нашел в Интернете, - это явное ожидание загрузки определенного элемента.
В htmlunit есть еще один способ - преобразовать весь асинхронный JavaScript в синхронный JavaScript.
client.setAjaxController(new NicelyResynchronizingAjaxController());
Это более общий характер, поскольку нам не нужно точно знать, какой элемент ждать.
Есть ли способ реализовать это с помощью firefoxdriver.
1 ответ
Вот как вы можете ждать определенного элемента, который загружается в DOM после Ajax-запроса.
Предположим, у вас есть следующее:
<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
Это самое простое, что я могу объяснить.