Сохранение переменных, Echo, Alert, обработка всплывающих окон в Selenium IDE

⚡ Умное резюме

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

  • 🔘 Создайте переменную: Команда store принимает значение в Target и имя переменной в поле Value.
  • ☑️ Перечитайте это: Заключите имя в ${ } везде, где команда принимает цель или значение.
  • Вывести для отладки: Функция echo записывает в лог IDE строку или значение переменной.
  • 🧪 Уведомления принимаются автоматически: IDE автоматически нажимает кнопку OK, поэтому используйте storeAlert для перехвата текста сообщения.
  • 🇧🇷 Для подтверждения необходимо принять решение: Разместите команду chooseOkOnNextConfirmation перед командой, открывающей диалоговое окно.
  • 📊 Переключение окон: Функция selectWindow выбирает заголовок окна, а значение null возвращает указатель на родительское окно.

Сохраняйте переменные, обрабатывайте всплывающие окна, сообщения и предупреждения в памяти. Selenium IDE

В этом уроке вы изучите команды хранилища, команду echo, а также обработку всплывающих окон и предупреждений. Selenium IDEВместе эти команды превращают записанный скрипт с фиксированным результатом в скрипт, реагирующий на любые действия, выполняемые приложением во время выполнения.

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

Selenium Переменные IDE

Магазин

Чтобы хранить переменные в Selenium В качестве IDE мы используем магазин Команда. На приведенном ниже рисунке значение «tutorial» сохраняется в переменной с именем «myVariable».

Selenium Команда сохранения в IDE с указанием значения, сохраненного в переменной myVariable (из руководства).

Для доступа к переменной просто заключите её в символ ${ … }. Например, чтобы ввести значение "myVariable" в текстовое поле "userName" в Mercury Tours введите ${myVariable} в поле Значение.

Selenium Введите команду IDE, используя ${myVariable} в поле "Значение" текстового поля userName.

Команда эхо в Selenium IDE

Сохраненная переменная невидима до тех пор, пока что-либо не выведет её на экран, и именно это и делает её таковой. эхо Эта команда выполняет свою задачу. Она записывает сообщение в панель журнала IDE во время воспроизведения, что делает её самым быстрым способом подтвердить, что команда сохранения угадала то, что вы ожидали, прежде чем создавать на её основе утверждения.

Команда принимает любой из двух вариантов:

  • Буквально строка. Вставьте текст в Target поле, например Этап входа в систему завершен., чтобы отметить контрольную точку в длинном сценарии.
  • Переменная. Вставьте ${myVariable} в Target В поле выводится сохраненное значение, а не имя.

Две привычки делают команду echo гораздо полезнее, чем кажется на первый взгляд. Выводите переменную сразу после команды сохранения, которая её создаёт, чтобы в случае ошибки... tracОтносится к этапу захвата, а не к утверждению, которое выполняется двадцатью шагами позже. И добавляйте префикс к каждому сообщению, указывающий, к какому этапу оно относится, поскольку в панели журнала все команды отображаются в одном плоском списке. Обратите внимание, что команда echo только записывает данные в журнал — она никогда не меняет страницу и никогда не завершает проверку с ошибкой, поэтому ее можно безопасно оставить в скрипте навсегда.

StoreElementPresent

Эта команда сохраняет либо «true», либо «false» в зависимости от наличия указанного элемента. Приведённый ниже скрипт сохраняет логическое значение «true» в «var1» и «false» в «var2». Для проверки мы используем команду echo для отображения значений var1 и var2. Базовый URL Для иллюстрации ниже было установлено следующее: Mercury Домашняя страница туров.

Selenium В логе отображается, что функция storeElementPresent в IDE сохраняет значение true для var1 и false для var2.

Магазинтекст

Эта команда используется для сохранения внутреннего текста элемента в переменную. На иллюстрации ниже внутренний текст тега h1 на странице регистрации в Facebook сохраняется в переменную с именем «textVar».

Selenium Команда `storeText` в IDE считывает `css=h1` в переменную `textVar`.

Поскольку это единственный в своем роде элемент на странице, можно смело использовать «css=h1» в качестве целевого параметра. Изображение ниже это демонстрирует. Selenium IDE смогла сохранить строку «Sign Up» в переменной «textVar», потому что команда echo корректно вывела её значение.

Selenium В панели журнала IDE значение переменной textVar отображается как "Sign Up".

Оповещения, всплывающие окна и множественные Windows

Уведомления, пожалуй, являются простейшей формой всплывающих окон. Наиболее распространенный тип. Selenium Для обработки оповещений используются следующие команды IDE:

Оповещения Пользы

утверждатьAlert

утверждатьNotAlert

Извлекает сообщение оповещения и сравнивает его со строковым значением, которое вы указали.

AssertAlertPresent

AssertAlertNotPresent

проверяет, присутствует ли оповещение или нет.
storeAlert Получает сообщение об ошибке и сохраняет его в указанной вами переменной.
магазинAlertPresent Возвращает TRUE, если присутствует оповещение, FALSE в противном случае.

проверить оповещение

проверитьNotAlert

Получает сообщение оповещения и проверяет, совпадает ли оно со строковым значением, которое вы указали.

проверитьAlertPresent

проверитьAlertNotPresent

проверяет наличие или отсутствие оповещения.

Помните эти две вещи при работе с оповещениями:

  • Selenium IDE автоматически нажимает кнопку «ОК» в окне предупреждения, поэтому вы не сможете увидеть само предупреждение.
  • 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 после воспроизведения.

Подтверждения

Подтверждения представляют собой всплывающие окна с кнопками «ОК» и «ОТМЕНА», в отличие от оповещений, которые отображают только кнопку «ОК». Команды, используемые для обработки подтверждений, аналогичны командам для оповещений.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • storeПодтверждение
  • магазинПодтверждениеПодарок
  • verifyConfirmation / verifyNotConfirmation
  • verifyConfirmationPresent / verifyConfirmationNotPresent

Кроме того, эти команды сообщают Selenium Какую кнопку выбрать: ОК или ОТМЕНА?

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • выберитеОтменаНаСледующемПодтверждение

Разместите эти команды до команда, которая запускает окно подтверждения, чтобы Selenium IDE заранее знает, какой вариант выбрать. Повторюсь, вы не увидите фактического окна подтверждения во время выполнения скрипта.

Давайте протестируем веб-страницу с кнопкой, которая запрограммирована таким образом, чтобы сообщать, нажал ли пользователь кнопку «ОК» или «ОТМЕНА».

Шаг 1) In Selenium IDE, установить базовый уровень URL на http://jsbin.com. Полный текст URL Это http://jsbin.com/enifaf.

Шаг 2) Создайте скрипт, как показано ниже. На этот раз мы сначала нажмем кнопку ОК.

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 для перемещения между двумя окнами.

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

Шаг 3) Выполните сценарий. Обратите внимание, что прецедент Проверка прошла успешно, то есть мы смогли переключаться между окнами и успешно проверить их названия.

Зеленый цвет означает прохождение проверки. Selenium IDE после проверки обоих заголовков окон

Всегда помните, что установка целевого объекта selectWindow в значение «null» автоматически выбирает родительское окно — в данном случае окно, в котором находится элемент «link=here».

Примечание: С момента создания этого руководства Facebook изменил заголовок своей страницы. Измените ожидаемый заголовок в скрипте соответствующим образом.

Современные Selenium Эквиваленты этих команд в IDE

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

Устаревшая команда в этом руководстве Текущий Selenium Команда IDE
магазин магазин
эхо эхо
storeText хранить текст
storeElementPresent сохранить наличие элемента (или подтвердить наличие элемента)
assertAlert / verifyAlert подтвердить оповещение / проверить оповещение
chooseOkOnNextConfirmation Выберите «ОК» при следующем подтверждении.
выберитеОтменаНаСледующемПодтверждение Выберите «Отмена» при следующем подтверждении.
selectWindow (title as target) выберите окно с идентификатором ${handle}

Стоит отметить два отличия. Подсказки, которые не рассматривались в предыдущей статье, теперь имеют свои собственные команды: ответ на следующий вопрос планирует ответ до появления диалогового окна, и Ответ веб-драйвера на видимое сообщение Вводите текст в уже открытую командную строку. Переключение окон больше не зависит от заголовка страницы. Запустить ручка витрины магазина сначала захватить ручку, а затем передать. handle=${yourHandle} для выбора окна. Это изменение устраняет описанный выше сбой, когда сайт просто переименовывает свою страницу, и скрипт перестает находить окно. Официальная версия Selenium сайт проекта IDE Выводит полный список текущих команд.

Часто задаваемые вопросы (FAQ)

Да. ${myVariable} и ${myvariable} относятся к двум разным переменным, и обращение к переменной, которая никогда не была сохранена, приводит к пустой строке, а не к ошибке. Используйте единое соглашение об именовании во всем наборе тестов, чтобы избежать неявных пробелов.

Да. Синтаксис ${ } раскрывается в любом случае. Target или поле значения, поэтому оно работает внутри команды открытия, XPath или селектора CSS. Именно так записанный скрипт преобразуется в скрипт, управляемый данными, полученными ранее во время выполнения.

В Selenese отсутствуют математические операторы. Используйте команду execute script с небольшим префиксом. JavaСкриптовое выражение, которое считывает переменную и возвращает результат, а затем сохраняет это возвращаемое значение. Помните, что каждое сохраненное значение поступает в виде строки, поэтому сначала преобразуйте её.

Рассматривайте их как локальные для одного теста. Использование значений, установленных предыдущим тестом, делает набор тестов зависимым от порядка выполнения и затрудняет отладку, поэтому храните необходимые для теста данные внутри самого теста или считывайте их из файла данных в начале выполнения.

Для запроса нужен текст, а не просто кнопка выбора. Используйте команду `run answer` при следующем запросе, указав ответ в поле `Value` перед командой, которая его открывает, или используйте `webdriver answer` при видимом запросе, когда диалоговое окно уже отображается на экране.

Инструменты машинного обучения могут предложить последовательность команд на основе описания сценария на простом языке и предложить более надежные локаторы, чем те, которые выдает регистратор. Исправление локаторов с помощью ИИ также помогает, поскольку переименование элемента обычно является причиной того, что сохраненное значение возвращается пустым.

Да. Экспортируйте тест в Java or PythonЗатем позвольте Copilot преобразовать плоский список команд в объектные страницы и многократно используемые ожидания. Проверьте обработку предупреждений вручную, поскольку сгенерированный код часто предполагает наличие видимого диалогового окна, которое IDE уже закрыла.

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

Подведем итог этой публикации следующим образом: