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

В этом уроке вы изучите команды хранилища, команду echo, а также обработку всплывающих окон и предупреждений. Selenium IDEВместе эти команды превращают записанный скрипт с фиксированным результатом в скрипт, реагирующий на любые действия, выполняемые приложением во время выполнения.
⚠️ Примечание о версиях: Приведённые ниже скриншоты взяты из оригинала. Firefox-плагин Selenium IDE, и команды используют свои имена в стиле Selenese с использованием верблюжьего регистра. Текущая версия Chrome, Firefox Расширение Edge сохраняет то же поведение, но записывает большинство названий команд с пробелами. Картаping Таблица приведена в конце этой статьи, и все исходные команды и снимки экрана сохранены в том виде, в котором они были опубликованы.
Selenium Переменные IDE
Магазин
Чтобы хранить переменные в Selenium В качестве IDE мы используем магазин Команда. На приведенном ниже рисунке значение «tutorial» сохраняется в переменной с именем «myVariable».
Для доступа к переменной просто заключите её в символ ${ … }. Например, чтобы ввести значение "myVariable" в текстовое поле "userName" в Mercury Tours введите ${myVariable} в поле Значение.
Команда эхо в Selenium IDE
Сохраненная переменная невидима до тех пор, пока что-либо не выведет её на экран, и именно это и делает её таковой. эхо Эта команда выполняет свою задачу. Она записывает сообщение в панель журнала IDE во время воспроизведения, что делает её самым быстрым способом подтвердить, что команда сохранения угадала то, что вы ожидали, прежде чем создавать на её основе утверждения.
Команда принимает любой из двух вариантов:
- Буквально строка. Вставьте текст в Target поле, например Этап входа в систему завершен., чтобы отметить контрольную точку в длинном сценарии.
- Переменная. Вставьте ${myVariable} в Target В поле выводится сохраненное значение, а не имя.
Две привычки делают команду echo гораздо полезнее, чем кажется на первый взгляд. Выводите переменную сразу после команды сохранения, которая её создаёт, чтобы в случае ошибки... tracОтносится к этапу захвата, а не к утверждению, которое выполняется двадцатью шагами позже. И добавляйте префикс к каждому сообщению, указывающий, к какому этапу оно относится, поскольку в панели журнала все команды отображаются в одном плоском списке. Обратите внимание, что команда echo только записывает данные в журнал — она никогда не меняет страницу и никогда не завершает проверку с ошибкой, поэтому ее можно безопасно оставить в скрипте навсегда.
StoreElementPresent
Эта команда сохраняет либо «true», либо «false» в зависимости от наличия указанного элемента. Приведённый ниже скрипт сохраняет логическое значение «true» в «var1» и «false» в «var2». Для проверки мы используем команду echo для отображения значений var1 и var2. Базовый URL Для иллюстрации ниже было установлено следующее: Mercury Домашняя страница туров.
Магазинтекст
Эта команда используется для сохранения внутреннего текста элемента в переменную. На иллюстрации ниже внутренний текст тега h1 на странице регистрации в Facebook сохраняется в переменную с именем «textVar».
Поскольку это единственный в своем роде элемент на странице, можно смело использовать «css=h1» в качестве целевого параметра. Изображение ниже это демонстрирует. Selenium IDE смогла сохранить строку «Sign Up» в переменной «textVar», потому что команда echo корректно вывела её значение.
Оповещения, всплывающие окна и множественные 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 выводит его на экран.
Шаг 3) Выполните скрипт и не ожидайте увидеть фактическое оповещение. В приведенной ниже панели журнала отображается перехваченное сообщение, хотя диалоговое окно никогда не было видно.
Подтверждения
Подтверждения представляют собой всплывающие окна с кнопками «ОК» и «ОТМЕНА», в отличие от оповещений, которые отображают только кнопку «ОК». Команды, используемые для обработки подтверждений, аналогичны командам для оповещений.
- 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) Создайте скрипт, как показано ниже. На этот раз мы сначала нажмем кнопку ОК.
Шаг 3) Запустите скрипт и обратите внимание, что вы не увидите фактического подтверждения, но веб-страница по-прежнему сообщает, какая кнопка была нажата. Selenium Нажата кнопка IDE.
Шаг 4) Замените команду chooseOkOnNextConfirmation на chooseCancelOnNextConfirmation и снова выполните скрипт. Теперь на странице отобразится противоположный вариант выбора.
Многочисленные Windows
Если вы переходите по ссылке, которая открывает отдельное окно, вам необходимо сначала дать соответствующие инструкции. Selenium В IDE для выбора этого окна необходимо сначала получить доступ к элементам внутри него. В устаревших IDE в качестве локатора используется заголовок окна.
Для переключения между окнами мы используем команду selectWindow.
Мы воспользуемся ссылкой http://jsbin.com/ocinaj/1, заголовок которой — «Первое окно». Гиперссылка «здесь» на этой странице откроет Facebook в новом окне, после чего мы дадим инструкции. Selenium IDE для выполнения следующих действий:
- Передайте управление из родительского окна в только что открытое окно Facebook, используя команду selectWindow, указав в качестве локатора заголовок окна.
- Проверьте заголовок нового окна.
- Снова выберите исходное окно, используя команду selectWindow с указанием "null" в качестве целевого окна.
- Проверьте заголовок текущего выбранного окна.
Представленный выше план преобразуется в показанную здесь последовательность из четырех шагов.
Шаг 1) Установите базу URL на http://jsbin.com.
Шаг 2) Создайте скрипт, как показано ниже.
Нам нужна команда паузы, чтобы дождаться загрузки только что открывшегося окна, прежде чем мы сможем прочитать его заголовок.
Шаг 3) Выполните сценарий. Обратите внимание, что прецедент Проверка прошла успешно, то есть мы смогли переключаться между окнами и успешно проверить их названия.
Всегда помните, что установка целевого объекта 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 Выводит полный список текущих команд.













