Очікування є характерною рисою будь-якого UI-тесту для динамічних додатків. Вони полегшують синхронізацію AUT і тестового скрипта. Реакція програми на команди набагато повільніша, ніж робота скрипта. Тому в скриптах доводиться чекати певного стану програми, щоб взаємодіяти з нею.
Використання команд очікування є важливим при виконанні тестів у Selenium. Це дозволяє уникнути проблем, які можуть виникнути через зміну часової затримки.
Тим не менш, очікування, особливо в автоматизованих тестах, не завжди добре. Але можна реорганізувати свою роботу, використовуючи сприятливий метод. Selenium WebDriver має три команди для реалізації очікувань у тестах: Implicit Wait, Explicit Wait, Fluent Wait.
У цій статті ми зосередимося на перших двох командах.
Неявне очікування вказує веб-драйверу Selenium зачекати необхідний час, а потім згенерувати виняток. Після визначення часу, WebDriver чекає на елемент перед тим, як згенерувати виключення.
Після виконання команд неявне очікування діє доти, доки відкритий браузер. Значення за замовчуванням дорівнює 0, тому виняток буде миттєвим.
Синтаксис: driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)
Встановити неявне очікування:

Налаштування неявного очікування
Неявне очікування збільшує час виконання тестового сценарію. Команди повинні зачекати певний час, перш ніж повернутися до виконання тесту.
Явне очікування реалізується при виконанні умови, після чого тест буде запущено знову.
Синтаксис: WebDriverWait wait = new WebDriverWait(driver,10)
Список умов, що застосовуються ExpectedConditions:
- alertIsPresent()
- elementSelectionStateToBe()
- elementToBeClickable()
- elementToBeSelected()
- frameToBeAvaliableAndSwitchToIt()
- невидимістьElementLocated()
- invisibilityOfElementWithText()
- presenceOfAllElementsLocatedBy()
- presenceOfElementLocated()
- textToBePresentInElement()
- textToBePresentInElementLocated()
- textToBePresentInElementValue()
- titleIs()
- titleContains()
- visibilityOf()
- visibilityOfAllElements()
- visibilityOfAllElementsLocatedBy()
- visibilityOfElementLocated()
Приклад тесту Explicit Wait:
private WebDriver driver;
private WebDriverWait wait wait;
private WebElement exampleElement;
@BeforeMethod(alwaysRun = true)
public void setUpDriver() {
//Встановлюємо драйвер
ChromeOptions options = new ChromeOptions();
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver(options);
//Встановлюємо явне очікування
wait = new WebDriverWait(driver, 10);
}
@Test(description = “Відкрити url”)
public void openUrl() {
//Відкрити браузер
driver.manage().window().setSize(new Dimension(1280, 970));
//Здобути url
driver.get(“https://some-site.com”);
//Чекаємо, поки blockUI не зникне
wait.until(ExpectedConditions.invisibilityOfElementLocated
(By.cssSelector(“element”)));
wait.until(ExpectedConditions.invisibilityOf(exampleElement));
//Пошук елементу
WebElement element = driver.findElement(By.id(“some-id”));
Assert.assertTrue(element.isDisplayed());
//Клікнути елемент
element.click();
//Чекаємо, поки алерт буде присутній
wait.until(ExpectedConditions.alertIsPresent());
driver.switchTo().alert().accept();
}
@AfterMethod(alwaysRun = true)
public void closeBrowser() {
//Закрити браузер
driver.quit();
}
У роботі автоматизованого тестувальника в незалежній організації із забезпечення якості дуже важливо застосовувати команди очікування Selenium. Це заощадить багато часу і забезпечить відмінний підхід до вирішення багатьох проблем тестування програмного забезпечення.










0 коментарів