implicit explicit wait selenium webdriver
Вивчіть неявне та явне очікування в Selenium WebDriver:
У попередньому підручнику ми намагалися ознайомити вас з різними предметами Циклічні та умовні операції WebDriver . Ці умовні методи часто мають справу майже з усіма типами параметрів видимості веб-елементів.
Рухаючись вперед у цьому безкоштовна серійна селена - , ми обговоримо різні типи очікування, надані Selenium WebDriver . Ми також поговоримо про v різні варіанти навігації доступний у WebDriver.
Очікування допомагає користувачеві вирішувати проблеми під час перенаправлення на різні веб-сторінки, оновлюючи всю веб-сторінку та перезавантажуючи нову веб-елементів. Іноді можуть бути дзвінки Ajax. Таким чином, під час перезавантаження веб-сторінок та відображення веб-елементів спостерігається відставання у часі.
Користувачі часто знаходять навігацію різними веб-сторінками вперед і назад. Таким чином, команди / методи navigate (), що надаються WebDriver, допомагають користувачеві моделювати сценарії реального часу шляхом навігації між веб-сторінками з посиланням на історію веб-браузера.
WebDriver оснащує користувача двома генезами очікування для обробки періодичного завантаження сторінки s, завантаження веб-елементів, зовнішній вигляд вікон, спливаючих вікон та повідомлень про помилки та відображення веб-елементів на веб-сторінці.
- Неявне очікування
- Явне очікування
Давайте обговоримо кожен із них детально, враховуючи практичний підхід.
Що ви дізнаєтесь:
- Неявне очікування WebDriver
- Явне очікування WebDriver
- Очікуваний стан
- Навігація за допомогою WebDriver
- Висновок
- Рекомендована література
Неявне очікування WebDriver
Неявні очікування використовуються для забезпечення часу очікування за замовчуванням (скажімо, 30 секунд) між кожним послідовним кроком тесту / командою у всьому тестовому сценарії. Таким чином, наступний тестовий крок буде виконуватися лише тоді, коли минуло 30 секунд після виконання попереднього тестового кроку / команди.
Основні примітки
- Явне очікування - це один рядок коду і може бути оголошено в способі налаштування тестового сценарію.
- Порівняно з явним очікуванням, неявне очікування є прозорим і нескладним. Синтаксис та підхід простіші, ніж явне очікування.
Будучи простим і простим у застосуванні, неявне очікування також вносить деякі недоліки. Це породжує час виконання тестового сценарію, оскільки кожна з команд перестає чекати обумовленої кількості часу перед відновленням виконання.
Таким чином, для усунення цієї проблеми WebDriver вводить явні очікування, де ми можемо явно застосувати очікування, коли виникає ситуація, замість того, щоб примусово чекати під час виконання кожного з тестових кроків.
Імпортні заяви
імпорт java.util.concurrent.TimeUnit - Щоб мати можливість отримати доступ до неявного очікування в наших тестових скриптах, ми зобов’язані імпортувати цей пакет у наш тестовий скрипт.
Синтаксис
drv .manage (). timeouts (). неявноWait (10, TimeUnit. СЕКУНДИ );
Включіть наведений вище рядок коду до тестового сценарію незабаром після створення екземпляра змінної екземпляра WebDriver. Таким чином, це все, що потрібно для встановлення неявного очікування у вашому тестовому сценарії.
Проходження коду
Неявний мандат очікування передає два значення як параметри. Перший аргумент вказує час у цифрових цифрах, який потрібно чекати системі. Другий аргумент вказує шкалу вимірювання часу. Таким чином, у наведеному вище коді ми згадали “30” секунд як час очікування за замовчуванням, а одиницю часу встановили на “секунди”.
Явне очікування WebDriver
Явні очікування використовуються для зупинки виконання до тих пір, поки не буде виконано певну умову або не минуло максимальний час. На відміну від неявних очікувань, явні очікування застосовуються лише для певного екземпляра.
WebDriver вводить такі класи, як WebDriverWait та ExpectedConditions, щоб забезпечити явне очікування в тестових сценаріях. В рамках цієї дискусії ми будемо використовувати “gmail.com” як зразок.
Сценарій для автоматизації
- Запустіть веб-браузер і відкрийте 'gmail.com'
- Введіть дійсне ім’я користувача
- Введіть дійсний пароль
- Клацніть на кнопку входу
- Зачекайте, поки кнопка 'Написати' стане видимою після завантаження сторінки
Код WebDriver за допомогою явного очікування
Зверніть увагу, що для створення скриптів ми використовуємо проект “Learning_Selenium”, створений у попередніх навчальних посібниках.
Крок 1 : Створіть новий клас Java із назвою “Wait_Demonstration” в рамках проекту “Learning_Selenium”.
Крок 2 : Скопіюйте та вставте наведений нижче код у класі “Wait_Demonstration.java”.
Нижче наведено тестовий скрипт, еквівалентний вищезазначеному сценарію.
import static org.junit.Assert.*; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Wait_Demonstration { // created reference variable for WebDriver WebDriver drv; @Before public void setup() throws InterruptedException { // initializing drv variable using FirefoxDriver drv=new FirefoxDriver(); // launching gmail.com on the browser drv.get('https://gmail.com'); // maximized the browser window drv.manage().window().maximize(); drv.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @Test public void test() throws InterruptedException { // saving the GUI element reference into a 'username' variable of WebElement type WebElement username = drv.findElement(By.id('Email')); // entering username username.sendKeys('shruti.shrivastava.in'); // entering password drv.findElement(By.id('Passwd')).sendKeys('password'); // clicking signin button drv.findElement(By.id('signIn')).click(); // explicit wait - to wait for the compose button to be click-able WebDriverWait wait = new WebDriverWait(drv,30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div[contains(text(),'COMPOSE')]'))); // click on the compose button as soon as the 'compose' button is visible drv.findElement(By.xpath('//div[contains(text(),'COMPOSE')]')).click(); } @After public void teardown() { // closes all the browser windows opened by web driver drv.quit(); } }
Імпортні заяви
- імпорт орг. openqa.selenium.support.ui.ExpectedConditions
- імпорт орг. openqa.selenium.support.ui.WebDriverWait
- Імпортуйте вищезазначені пакети до створення сценарію. Пакети посилаються на клас Select, який необхідний для обробки спадного меню.
Обґрунтування об’єкта для класу WebDriverWait
WebDriverWait wait = новий WebDriverWait ( drv , 30);
Ми створюємо посилальну змінну “wait” для класу WebDriverWait і створюємо її за допомогою екземпляра WebDriver та максимального часу очікування для звільнення виконання. Максимальний вказаний час очікування вимірюється у «секундах».
Екземпляр WebDriver обговорювався в початкових підручниках WebDriver.
Очікуваний стан
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath('//div[contains(text(),'COMPOSE')]'))); drv.findElement(By.xpath('//div[contains(text(),'COMPOSE')]')).click();
Вищевказана команда чекає встановленого періоду часу або очікуваного стану, залежно від того, що настає або проходить раніше.
Таким чином, щоб мати змогу це зробити, ми використовуємо посилальну змінну “wait” класу WebDriverWait, створену на попередньому кроці з класом ExpectedConditions та фактичною умовою, яка очікується. Отже, як тільки настає очікувана умова, елемент керування програмою переходить до наступного кроку виконання, а не з примусовим очікуванням цілих 30 секунд.
У нашому зразку ми чекаємо, поки кнопка “скласти” буде присутня та завантажена як частина завантаження домашньої сторінки, і, отже, рухаємося вперед із викликом команди клацання на кнопці “скласти”.
Типи очікуваних умов
Клас ExpectedConditions надає велику допомогу для розв’язання сценаріїв, коли нам потрібно з’ясувати стан, який має статися перед виконанням фактичного кроку тесту.
Клас ExpectedConditions поставляється з широким діапазоном очікуваних умов, до яких можна отримати доступ за допомогою посилальної змінної WebDriverWait та до ().
Давайте обговоримо декілька з них довго:
# 1) elementToBeClickable () - Очікувана умова очікує, що елемент стане інтерактивним, тобто він повинен бути присутнім / відображеним / видимим на екрані, а також увімкненим.
Зразок коду
wait.until (ExpectedConditions.elementToBeClickable (By.xpath ( “// div [містить (текст (),‘ СКЛАДИ ’)]” )));
# 2) textToBePresentInElement () - Очікувана умова очікує на елемент, що має певний рядок.
Зразок коду
wait.until (ExpectedConditions.textToBePresentInElement (By.xpath ( “// div [@ id =‘ ForgotPass '”),“ текст, який потрібно знайти ” ));
виявлення витоків пам’яті c ++
# 3) alertIsPresent () - Очікувана умова чекає появи вікна попередження.
Зразок коду
wait.until (ExpectedConditions.alertIsPresent ())! = null);
# 4) titleIs () - очікувана умова чекає сторінку з певним заголовком.
Зразок коду
wait.until (ExpectedConditions.titleIs ( “Gmail” ));
# 5) frameToBeAvailableAndSwitchToIt () - Очікувана умова чекає, коли кадр стане доступним, а потім, як тільки кадр стане доступним, управління автоматично перемикається на нього.
Зразок коду
wait.until (ExpectedConditions.frameToBeAvailableAndSwitchToIt (By.id (“ newframe ')));
Існує дуже поширена дія користувача, коли користувач натискає кнопки назад і вперед у веб-браузері вперед і назад, щоб перейти до різних веб-сторінок, відвіданих в поточному сеансі в історії браузера. Таким чином, для імітації таких дій, що виконуються користувачами, WebDriver вводить команди Navigate.
Давайте розглянемо ці команди детально:
# 1) navigate (). Back ()
Ця команда дозволяє користувачеві перейти до попередньої веб-сторінки.
Зразок коду:
driver.navigate (). back ();
Вищевказана команда не вимагає параметрів і повертає користувача до попередньої веб-сторінки в історії веб-браузера.
# 2) navigate (). Forward ()
Ця команда дозволяє користувачеві перейти до наступної веб-сторінки з посиланням на історію браузера.
Зразок коду:
driver.navigate (). forward ();
Вищевказана команда не вимагає параметрів і перенаправляє користувача на наступну веб-сторінку в історії веб-браузера.
# 3) navigate (). Refresh ()
Ця команда дозволяє користувачеві оновити поточну веб-сторінку, перезавантажуючи всі веб-елементи.
Зразок коду:
driver.navigate (). refresh ();
Вищевказана команда не вимагає параметрів і перезавантажує веб-сторінку.
# 4) navigate (). To ()
Ця команда дозволяє користувачеві запустити нове вікно веб-браузера та перейти до вказаної URL-адреси.
Зразок коду:
driver.navigate (). to (“http://google.com”);
Для наведеної вище команди в якості параметра потрібна веб-URL-адреса, а потім вона відкриває вказану URL-адресу у щойно запущеному веб-браузері.
Висновок
У цьому Неявне та явне очікування в підручнику Selenium WebDriver , ми спробували ознайомити вас із очікуванням WebDriver. Ми обговорювали і застосовували як явні, так і неявні очікування. Одночасно ми також обговорили різні команди навігації.
Ось суть цієї статті:
- WebDriver дозволяє користувачеві вибирати серед доступних очікувань для обробки ситуацій, коли потік виконання може зажадати сну протягом декількох секунд, щоб завантажити веб-елементи або виконати певні умови. У WebDriver доступні два типи очікування.
- Неявне очікування
- Явне очікування
- Неявне очікування використовуються для надання часу очікування за замовчуванням між кожним послідовним кроком тесту / командою у всьому тестовому сценарії. Таким чином, наступний тестовий крок буде виконуватися лише тоді, коли зазначена кількість часу минула після виконання попереднього тестового кроку / команди.
- Явне очікування використовуються для зупинки виконання до тих пір, поки не буде дотримано певну умову або не минуло максимальний час. На відміну від неявних очікувань, явні очікування застосовуються лише для певного екземпляра.
- WebDriver представляє такі класи, як WebDriverWait та ExpectedConditions, щоб забезпечити явне очікування
- Очікувані умови class надає велику допомогу для розв’язання сценаріїв, коли нам слід з’ясувати стан, який має статися, перед виконанням фактичного кроку тесту.
- Клас ExpectedConditions поставляється з широким діапазоном очікуваних умов, до яких можна отримати доступ за допомогою посилальної змінної WebDriverWait та до ().
- Методи навігації () / команди використовуються для імітації поведінки користувача під час навігації між різними веб-сторінками вперед і назад.
Наступний підручник No16 : Переходячи до наступного підручника у списку, ми ознайомимо користувачів із різними типами попереджень, які можуть з’являтися під час доступу до веб-сайтів та підходами до них у WebDriver. Типи сповіщень, на яких ми зосередимося, - це переважно спливаючі вікна сповіщень на базі Windows та спливаючі вікна сповіщень, що базуються на Інтернеті. Оскільки ми знаємо, що обробка спливаючих вікон на базі вікон виходить за рамки можливостей WebDriver, тому ми також використовуємо деякі сторонні утиліти для обробки спливаючих вікон.
Примітка для читачів : До цього часу читачі можуть автоматизувати сценарії з різними завантаженнями сторінок та динамічними елементами, що з’являються на екрані, використовуючи різні очікувані умови та команди навігації.
Рекомендована література
- Підручник з огірка селену: інтеграція огірка Java Selenium WebDriver
- Вступ до Selenium WebDriver - Підручник з селену №8
- Впровадження нашого першого сценарію WebDriver - Підручник № 10 для Selenium WebDriver
- Поширені запитання щодо селену
- Як обробляти сповіщення / спливаючі вікна в Selenium WebDriver - Підручник з селену No16
- Посібник із створення звітів про обсяги в Selenium WebDriver
- Як запустити Selenium WebDriver у різних популярних браузерах
- Повне налаштування та встановлення WebDriver за допомогою Eclipse - Підручник селену № 9