Зберігати змінні, відлуння, сповіщення, обробку спливаючих вікон Selenium IDE

⚡ Розумний підсумок

Зберігати команди в Selenium IDE зберігає значення середовища виконання в іменовані змінні, echo виводить їх у журнал, а спеціальне сімейство команд обробляє сповіщення, діалогові вікна підтвердження та перемикання між кількома вікнами браузера.

  • 🔘 Створіть змінну: Команда store приймає значення в Target та ім'я змінної у Значенні.
  • ☑️ Перечитайте це ще раз: Оберніть ім'я в ${ } скрізь, де команда приймає ціль або значення.
  • Друк для налагодження: echo записує літерал або змінну безпосередньо в журнал IDE.
  • 🧪 Сповіщення приймаються автоматично: IDE натискає кнопку «ОК», тому використовуйте storeAlert для запису тексту повідомлення.
  • 🛠️ Підтвердження потребують рішення: Розмістіть chooseOkOnNextConfirmation перед командою, яка відкриває діалогове вікно.
  • 📊 Перемикання вікон: selectWindow спрямовує на заголовок вікна, а null-ціль повертає до батьківського вікна.

Зберігайте змінні, обробку відлуння, сповіщень та спливаючих вікон у Selenium IDE

У цьому посібнику ви дізнаєтеся про команди store, команду echo, а також про обробку попереджень та спливаючих вікон у Selenium IDEРазом ці команди перетворюють фіксований записаний скрипт на такий, що реагує на все, що повертає програма під час виконання.

⚠️ Примітка щодо версій: скріншоти нижче взяті з оригіналу Firefox-підключати Selenium IDE, а команди використовують його назви у верблюжому регістрі селенських літер. Поточний Chrome, Firefox а розширення Edge зберігає ту саму поведінку, але записує більшість імен команд з пробілами. Картаping Таблиця відображається ближче до кінця цієї статті, і кожна оригінальна команда та знімок екрана збережені в опублікованому вигляді.

Selenium Змінні IDE

Магазин

Для зберігання змінних у Selenium IDE, ми використовуємо зберігати команда. На ілюстрації нижче значення «tutorial» зберігається у змінній з іменем «myVariable».

Selenium Команда IDE store зі збереженням значення в myVariable.

Щоб отримати доступ до змінної, просто вкажіть її в символі ${ … }. Наприклад, щоб ввести значення «myVariable» у текстове поле «userName» Mercury Тури, введіть ${myVariable} у полі «Значення».

Selenium Команда типу IDE з використанням ${myVariable} у полі Value текстового поля userName

Команда відлуння в Selenium IDE

Збережена змінна невидима, доки щось її не виведе, і саме це... нудьгувати команда. Вона записує повідомлення в панель журналу IDE під час відтворення, що робить її найшвидшим способом підтвердження того, що команда store охопила очікувані дані, перш ніж створювати твердження на її основі.

Команда приймає будь-яку з форм:

  • Літеральний рядок. Вставте текст у Target поле, наприклад Етап входу завершено, щоб позначити контрольну точку у довгому сценарії.
  • Змінна. Помістіть ${myVariable} у Target поле, а збережене значення друкується замість імені.

Дві звички роблять echo набагато кориснішим, ніж здається на перший погляд. Вивести змінну одразу після команди store, яка її створює, таким чином вивести помилку. tracдо захоплення, а не до твердження через двадцять кроків. І додавайте перед кожним повідомленням крок, до якого воно належить, оскільки панель журналу відображає кожну команду в одному плоскому списку. Зауважте, що echo записує лише в журнал — він ніколи не змінює сторінку та ніколи не проходить перевірку, тому його безпечно залишити в скрипті назавжди.

StoreElementPresent

Ця команда зберігає або «true», або «false» залежно від наявності вказаного елемента. Наведений нижче скрипт зберігає логічне значення «true» у «var1» та «false» у «var2». Для перевірки ми використаємо команду echo для відображення значень var1 та var2. Базовий варіант URL для ілюстрації нижче було встановлено значення Mercury Домашня сторінка турів.

Selenium IDE storeElementPresent зберігає значення true для var1 та false для var2, що відображається в журналі

StoreText

Ця команда використовується для збереження внутрішнього тексту елемента у змінній. На ілюстрації нижче внутрішній текст тегу h1 на сторінці реєстрації Facebook зберігається у змінній з назвою «textVar».

Selenium Команда IDE storeText зчитує css=h1 у змінну textVar

Оскільки це єдиний елемент такого типу на сторінці, можна безпечно використовувати «css=h1» як ціль. Зображення нижче показує, що Selenium IDE вдалося зберегти рядок «Sign Up» у змінній «textVar», оскільки echo правильно вивело її значення.

Selenium Друк області журналу IDE. Зареєструватися як значення, що зберігається в textVar.

Сповіщення, спливаючі вікна та кілька Windows

Сповіщення, мабуть, є найпростішою формою спливаючих вікон. Найпоширеніші Selenium Для обробки сповіщень використовуються такі команди IDE:

Alerts Використовує

assertAlert

assertNotAlert

отримує повідомлення сповіщення та порівнює його з вказаним вами рядковим значенням

assertAlertPresent

assertAlertNotPresent

підтверджує, чи є сповіщення, чи ні
storeAlert отримує повідомлення сповіщення та зберігає його у вказаній вами змінній
storeAlertPresent повертає TRUE, якщо сповіщення присутнє, FALSE інакше

verifyAlert

verifyNotAlert

отримує повідомлення сповіщення та перевіряє, чи воно дорівнює вказаному вами рядковому значенню

verifyAlertPresent

verifyAlertNotPresent

перевіряє наявність сповіщення чи ні

Під час роботи зі сповіщеннями пам’ятайте про ці дві речі:

  • Selenium IDE автоматично натискає кнопку OK у вікні сповіщення, тому ви не зможете побачити саме сповіщення.
  • Selenium IDE не може обробляти сповіщення, що спрацьовують усередині функції onload() сторінки. Воно обробляє лише сповіщення, що генеруються після повного завантаження сторінки.

У цьому прикладі ми використовуємо команду storeAlert, щоб показати, що навіть якщо Selenium IDE не відобразило фактичне сповіщення, але все ж змогло отримати повідомлення.

Крок 1) In Selenium IDE, встановити базу URL на http://jsbin.com. Повний URL це http://jsbin.com/usidix. Ці фрагменти jsbin датуються Firefox-плагінів, і вони можуть більше не вирішуватися; будь-яка сторінка з кнопкою, яка викликає сповіщення, відтворює той самий результат.

Крок 2) Створіть скрипт, як показано нижче. Команда click впливає на кнопку Go!, storeAlert записує повідомлення в alertMessage, а echo виводить його.

Selenium Скрипт IDE з командами click, storeAlert та echo на демонстраційній сторінці сповіщень jsbin

Крок 3) Виконайте скрипт і не очікуйте побачити фактичне сповіщення. Панель журналу нижче відображає записане повідомлення, хоча діалогове вікно ніколи не було видно.

Selenium Журнал IDE, що показує текст сповіщення, отриманий storeAlert після відтворення

Confirmations

Підтвердження – це спливаючі вікна з кнопками «ОК» та «СКАСУВАТИ», на відміну від сповіщень, які містять лише кнопку «ОК». Команди, які можна використовувати для обробки підтверджень, ідентичні командам сповіщень.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • storeConfirmation
  • storeConfirmationPresent
  • перевіритиПідтвердження / перевіритиНеПідтвердження
  • перевіритиПідтвердженняНаявності / перевіритиПідтвердженняНеНаявності

Крім того, ці команди повідомляють Selenium яку кнопку вибрати, OK чи СКАСУВАТИ.

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • виберіть «Скасувати наступне підтвердження».

Розмістіть ці команди перед тим команда, яка активує вікно підтвердження, щоб Selenium IDE заздалегідь знає, який варіант обрати. Знову ж таки, ви не побачите фактичного вікна підтвердження під час виконання скрипта.

Давайте перевіримо веб-сторінку з кнопкою, яка була закодована так, щоб повідомляти, чи натиснув користувач OK чи СКАСУВАТИ.

Крок 1) In Selenium IDE, встановити базу URL на http://jsbin.com. Повний URL це http://jsbin.com/enifaf.

Крок 2) Створіть скрипт, як показано нижче. Цього разу ми спочатку натиснемо кнопку OK.

Selenium Скрипт IDE, що розміщує chooseOkOnNextConfirmation перед клацанням, що відкриває діалогове вікно

Крок 3) Виконайте скрипт і зверніть увагу, що ви не бачите фактичного підтвердження, але веб-сторінка все ще повідомляє, яку кнопку натиснути. Selenium Натиснуто IDE.

Тестова сторінка, яка повідомляє про натискання кнопки «ОК» у діалоговому вікні підтвердження

Крок 4) Замініть команду chooseOkOnNextConfirmation на chooseCancelOnNextConfirmation та виконайте скрипт ще раз. Тепер сторінка повідомляє про протилежний вибір.

Selenium Скрипт IDE відредаговано для використання chooseCancelOnNextConfirmation замість chooseOkOnNextConfirmation

множинний Windows

Якщо ви натискаєте посилання, яке відкриває окреме вікно, спочатку потрібно вказати Selenium IDE для вибору цього вікна, перш ніж ви зможете отримати доступ до елементів усередині нього. У застарілому IDE ви використовуєте заголовок вікна як його локатор.

Ми використовуємо команду selectWindow для перемикання між вікнами.

Ми використовуватимемо посилання http://jsbin.com/ocinaj/1 під назвою «Перше вікно». Гіперпосилання «тут» на цій сторінці відкриває Facebook у новому вікні, після чого ми даємо інструкції Selenium IDE, щоб зробити наступне:

  • Передати керування з батьківського вікна до щойно запущеного вікна Facebook за допомогою команди selectWindow, вказавши заголовок вікна як локатор.
  • Перевірте заголовок нового вікна.
  • Знову виберіть оригінальне вікно за допомогою команди selectWindow, вказавши цільове значення «null».
  • Перевірте заголовок вибраного вікна.

Наведений вище план перетворюється на послідовність із чотирьох кроків, показану тут.

Схема перемикання з батьківського вікна на нове вікно і назад

Крок 1) Встановіть основу URL на http://jsbin.com.

Крок 2) Створіть сценарій, як показано нижче.

Selenium Скрипт IDE, що використовує selectWindow, pause та verifyTitle для переміщення між двома вікнами

Нам потрібна команда pause, щоб дочекатися завантаження щойно запущеного вікна, перш ніж ми зможемо прочитати його заголовок.

Крок 3) Виконайте сценарій. Зауважте, що тестовий випадок пройдено, тобто ми змогли перемикатися між вікнами та успішно перевіряти їхні заголовки.

Результат проходження зеленого поля Selenium IDE після перевірки обох заголовків вікон

Завжди пам’ятайте, що встановлення значення «null» для цільового значення selectWindow автоматично вибирає батьківське вікно — у цьому випадку вікно, де знаходиться елемент «link=here».

Примітка: Facebook змінив назву своєї сторінки з моменту створення цього посібника. Відповідно змініть очікувану назву у скрипті.

Modern Selenium Еквіваленти цих команд в IDE

Команда Firefox-plugin IDE було припинено підтримку, коли Firefox переміщено до архітектури WebExtensions та поточного Chrome, Firefox а розширення Edge перейменувало більшість команд Selenese на інтервальну форму. Поведінка не змінилася, тому таблиці нижче достатньо, щоб прочитати наведені вище скрипти для поточної інсталяції.

Застаріла команда в цьому посібнику Поточний Selenium Команда IDE
зберігати зберігати
нудьгувати нудьгувати
магазинТекст текст магазину
storeElementPresent збереження присутності елемента (або підтвердження присутності елемента)
assertAlert / verifyAlert підтвердження сповіщення / підтвердження сповіщення
chooseOkOnNextConfirmation виберіть «ОК» при наступному підтвердженні
виберіть «Скасувати наступне підтвердження». виберіть «Скасувати» при наступному підтвердженні
selectWindow (ціль — заголовок) вибрати вікно з handle=${handle}

Варто зазначити дві відмінності. Підказки, які не розглядалися в попередній статті, тепер мають власні команди: відповідь на наступний запит планує відповідь до появи діалогового вікна, та відповідь webdriver у видимому запиті вводить у вже відкрите вікно. А перемикання вікон більше не залежить від заголовка сторінки. Виконати ручка вікна магазину спочатку захопити дескриптор, а потім передати handle=${вашаДескролл} щоб вибрати вікно. Ця зміна усуває режим помилки, описаний у примітці вище, коли сайт просто перейменовує свою сторінку, і скрипт перестає знаходити вікно. Офіційний Selenium Сайт проекту IDE відображає повний поточний набір команд.

Поширені запитання

Так. ${myVariable} та ${myvariable} посилаються на дві різні змінні, і посилання на ту, яка ніколи не зберігалася, призводить до порожнього рядка, а не до виникнення помилки. Дотримуйтесь єдиної схеми іменування в усьому наборі, щоб уникнути пробілних символів.

Так. Синтаксис ${ } розширено в будь-якому Target або поле «Значення», тому воно працює всередині команди open, XPath або селектора CSS. Саме так записаний скрипт перетворюється на скрипт, керований даними, отриманими раніше під час виконання.

У Selenese немає математичних операторів. Використовуйте команду execute script з невеликим JavaВираз скрипта, який зчитує змінну та повертає результат, а потім зберігає це повернуте значення. Пам'ятайте, що кожне збережене значення надходить у вигляді рядка, тому спочатку конвертуйте його.

Ставтеся до них як до локальних значень одного тесту. Покладання на значення, встановлене попереднім тестом, робить залежним від порядку набору та ускладнює налагодження, тому зберігайте те, що потрібно тесту, всередині цього тесту або зчитуйте це з файлу даних на початку.

Для підказки потрібен текст, а не лише вибір кнопки. Виконайте відповідь у наступній підказці з відповіддю в полі «Значення» перед командою, яка її відкриває, або використовуйте відповідь webdriver у видимій підказці, коли діалогове вікно вже відображається на екрані.

Інструменти машинного навчання можуть пропонувати послідовність команд на основі опису сценарію простою мовою та пропонувати надійніші локатори, ніж ті, що видає диктофон. Відновлення локатора за допомогою штучного інтелекту також допомагає, оскільки перейменований елемент є звичайною причиною, чому збережене значення повертається порожнім.

Так. Експортувати тест до Java or Python, а потім дозвольте Copilot рефакторувати список плоских команд на об'єкти сторінок та повторно використовувані очікування. Перевірте обробку сповіщень вручну, оскільки згенерований код часто передбачає видиме діалогове вікно, яке IDE вже закрило.

Вибір на основі заголовка стає неоднозначним, і може бути вибрано неправильне вікно. Саме тому поточна IDE надає перевагу дескрипторам: захопити один із них за допомогою дескриптора вікна зберігання одразу після відкриття вікна, а потім переключитися за допомогою handle=${yourHandle}.

Підсумуйте цей пост за допомогою: