Проверьте наличие элемента и команду waitFor в Selenium
⚡ Умное резюме
Проверьте наличие элемента и выполните команды waitFor. Selenium IDE подтверждает, что страница содержит элементы и текст, ожидаемые тестом, и приостанавливает воспроизведение до тех пор, пока динамическое условие не станет истинным, после чего запускается следующий шаг.

Записано Selenium IDE Скрипт щелкает мышью и вводит текст, но сам по себе никогда не определяет, корректно ли работало приложение. Эту работу выполняют два семейства команд: проверить команды, которые проверяют состояние страницы, и ждать команды, которые приостанавливают выполнение до тех пор, пока страница не будет готова к проверке.
⚠️ Примечание о версиях: Приведённые ниже скриншоты взяты из оригинала. Firefox-плагин Selenium IDE, которая больше не распространяется, использует свои названия в стиле верблюжьего регистра (camelCase) и Selenese. Текущая IDE — это Chrome. Firefox и край расширение браузераОписанное здесь поведение по-прежнему актуально, но названия нескольких команд изменились — например, появилась карта.ping Таблица приведена далее в этой статье, и все исходные команды и скриншоты сохранены в точности в том виде, в котором они были опубликованы.
Проверка наличия элемента
Мы можем использовать следующие две команды для проверки наличия элемента:
- проверитьЭлементПрезент – возвращает TRUE, если указанный элемент НАЙДЕН на странице; ЛОЖЬ, если иначе
- проверитьЭлементнотпрезенте – возвращает TRUE, если указанный элемент НЕ НАЙДЕН нигде на странице; ЛОЖЬ, если оно присутствует.
Обе команды принимают элемент. локатор в Target поле — идентификатор, имя, CSS-селектор, текст ссылки или XPath выражение — и ни то, ни другое не нуждается в значении.
Тестовый скрипт ниже проверяет, присутствует ли текстовое поле UserName в Mercury Домашняя страница Tours, а текстовое поле First Name — нет. Текстовое поле First Name на самом деле является элементом, присутствующим на странице регистрации Mercury Туры, которых нет на главной странице.
Потому что это проверить команды вместо утверждать При выполнении команд в журнал записывается сообщение об ошибке, но оставшиеся шаги продолжают выполняться. Это различие подробно описано ниже.
Проверьте наличие определенного текста в команде в Selenium
Проверки существования элемента недостаточно — часто требуется подтвердить слова, отображаемые пользователю. Для этого существуют две текстовые команды.
- проверитьтекстпредент – возвращает TRUE, если указанная текстовая строка НАЙДЕНА где-то на странице; ЛОЖЬ, если иначе
- проверитьтекстнотпрезентент – возвращает TRUE, если указанная текстовая строка НЕ НАЙДЕНА нигде на странице; ЛОЖЬ, если он был найден
Помните, что эти команды чувствительны к регистру.
В приведенном ниже журнале показано, что одна и та же страница была проверена дважды, и одна и та же фраза была написана по-разному.
В описанном выше сценарии запрос «Атланта — Лас-Вегас» обрабатывался иначе, чем «Атланта — Лас-Вегас», потому что буква «А» в слове «Атланта» в первом случае была заглавной, а во втором — строчной. При использовании команды verifyTextPresent для каждого из них один запрос прошел проверку, а другой — нет.
Проверка конкретного положения элемента
Дефекты компоновки редко приводят к сбоям в работе локатора, поэтому проверки наличия их не выявляют. Команды позиционирования устраняют этот пробел.
Selenium IDE указывает положение элемента, измеряя (в пикселях) расстояние от левого или верхнего края окна браузера.
- проверитьЭлементПозиционЛефт – проверяет, соответствует ли указанное количество пикселей расстоянию элемента от левого края страницы. Это вернет FALSE, если указанное значение не соответствует расстоянию от левого края.
- проверитьЭлементПозиционТоп – проверяет, соответствует ли указанное количество пикселей расстоянию элемента от верхнего края страницы. Это вернет FALSE, если указанное значение не соответствует расстоянию от верхнего края.
Приведённый ниже скрипт записывает ожидаемые смещения пикселей в столбец «Значение».
Отнеситесь к этим двум командам с осторожностью. Смещение в пикселях изменяется в зависимости от размера окна, уровня масштабирования и установленных шрифтов, поэтому жестко заданное число, которое проходит проверку на одном компьютере, может не пройти на другом.
Ожидание команд в Selenium
Команда проверки может проверять только то, что уже отображается на экране, поэтому проверка, выполненная слишком рано, завершится неудачей, даже если приложение работает. Команды ожидания решают эту проблему синхронизации.
Ниже приведены типы команд ожидания в Selenium
и команды ожидания
Это команды, которые будут ждать загрузки новой страницы, прежде чем перейти к следующей команде.
Примерами могут служить
- нажмите и подождите
- введитеAndWait
- выберитеAndWait
Каждая из них представляет собой обычную команду действия с добавлением суффикса AndWait, как показано в приведенном ниже примере.
команды ожидания
Это команды, которые ждут, пока определенное условие станет истинным, прежде чем перейти к следующей команде (независимо от загрузки новой страницы). Эти команды более подходят для использования на динамических веб-сайтах на основе AJAX, которые меняют значения и элементы без перезагрузки всей страницы. Примеры включают в себя:
- waitForTitle
- ждатьForTextPresent
- ждатьForAlert
Рассмотрим сценарий Facebook ниже.
Мы можем использовать комбинацию «click» и «waitForTextPresent», чтобы проверить наличие текста «Указание вашего дня рождения».
Мы не можем использовать clickAndWait, поскольку при нажатии на кнопку «Почему мне нужно указывать свой день рождения?» страница не загружалась. связь. Если мы это сделаем, тест провалится.
Это же правило применяется к любому контенту, внедряемому с помощью скрипта, а не навигации, поэтому... Экраны, управляемые AJAX Практически всегда требуется использовать waitFor вместо andWait.
Команды Assert, Verify и waitFor в Selenium IDE
Новички часто выбирают не тот набор тестов, а затем удивляются, почему тестирование останавливается на первом же дефекте или почему оно сообщает о двадцати сбоях, хотя на самом деле все они... tracВернемся к единице. Три префикса отвечают на три разных вопроса.
| Префикс | Что она делает | При неудаче | Лучше всего подходит для |
|---|---|---|---|
| утверждать | Проверяет состояние немедленно. | Регистрирует ошибку и останавливает выполнение тестового случая. | Предварительные условия — вход в систему должен быть успешным, прежде чем что-либо еще станет понятным. |
| проверить | Проверяет состояние немедленно. | Регистрирует ошибку и переходит к выполнению следующей команды. | Независимые проверки, например, проверка нескольких этикеток на одной странице подтверждения. |
| ждать | Опросы проводятся до тех пор, пока условие не станет истинным. | После истечения тайм-аута регистрируется ошибка, затем выполнение продолжается. | Всё, что отображается с задержкой — AJAX-ответы, индикаторы загрузки, диалоговые окна. |
Практический шаблон объединяет все три: проверка страницы, на которую вы попали, ожидание элемента, который поступает асинхронно, а затем проверка каждого отдельного поля. Выполнение этих действий в таком порядке означает, что одна неработающая навигация останавливает тест на ранней стадии, в то время как несколько несоответствий внешнего вида выявляются за один запуск. Та же дисциплина применима и к Selenium Тесты, написанные на языке кода, эквивалентами которых являются жесткие утверждения, мягкие утверждения и явные ожидания.
Проверка и ожидание выполнения команд в текущем состоянии Selenium IDE
FirefoxIDE-плагин, создавший скриншоты выше, был выведен из эксплуатации, а набор команд был переработан для текущего расширения браузера. Несколько названий Selenese сохранились, некоторые были переименованы, а некоторые были удалены. В таблице ниже приведено соответствие команд, использованных в этой статье, их современным эквивалентам, взятым из официального источника. Selenium Справочник команд IDE.
| Наследие командования Селене | Команда в текущей IDE |
|---|---|
| проверитьЭлементПрезент | проверить наличие элемента |
| проверитьЭлементнотпрезенте | проверить, что элемент отсутствует |
| проверитьтекстпредент | Проверка текста (применяется к локатору элемента, а не ко всей странице) |
| проверитьтекстнотпрезентент | verify not text (scoped to an element locator) |
| verifyTitle | проверить название |
| verifyElementPositionLeft / verifyElementPositionTop | Аналогов не найдено — позиционные утверждения были отброшены. |
| clickAndWait, typeAndWait, selectAndWait | Суффикс AndWait отсутствует — команда открытия уже ожидает загрузки страницы. |
| ждатьForElementPresent | Ожидание появления элемента с временем ожидания в миллисекундах. |
| ждатьForAlert | После появления диалогового окна подтвердите или проверьте текст предупреждения. |
В повседневной работе наиболее важны два отличия. Во-первых, текущие команды ожидания — ожидание наличия элемента, ожидание видимости элемента, ожидание возможности редактирования элемента и их отрицательные аналоги — каждая требует явного времени ожидания в миллисекундах, поэтому медленный шаг больше не должен использовать один общий глобальный тайм-аут. Во-вторых, исчез поиск текста по всей странице: для проверки текста требуется локатор, что обычно обеспечивает более точную проверку.
Распространенные ошибки при использовании команд Verify и waitFor
Большинство проблем, о которых сообщается в связи с этими командами, не являются дефектами в IDE. Ниже приведен список наиболее часто встречающихся ошибок и способов их устранения.
- Элемент существует, но проверка всё равно не пройдена. Присутствие и видимость — это разные состояния. Элемент, скрытый за правилом CSS, всё ещё присутствует в DOM, поэтому используйте проверку присутствия в паре с ожиданием видимости элемента, когда проверка зависит от того, увидит ли его пользователь.
- Проверка текста не проходит, если формулировки выглядят идентичными. Неразрывные пробелы, пробелы в конце строки и фигурные апострофы, скопированные из проектного документа, приводят к ошибке точного совпадения. Вместо вставки необходимо вручную перепечатать ожидаемую строку.
- Команда ожидания завершается по истечении времени ожидания на странице, которая явно загрузилась. Элемент обычно находится внутри iframe. Сначала выполните команду `select frame`, иначе локатор будет применен к неправильному документу.
- Функция clickAndWait зависает в одностраничном приложении. Навигация не происходит, поэтому ждать нечего. Замените это щелчком мыши и соответствующей командой waitFor.
- Проверка положения проходит локально, но завершается с ошибкой на сервере сборки. Размер экрана и отображение шрифтов различаются. Предпочтительнее использовать проверку присутствия или текста, либо задать явный размер окна в начале теста.
- Вся система останавливается при первом же несоответствии. Вместо команды проверки была записана команда assert. Измените префикс, и программа будет сообщать обо всех ошибках, а не только о первой.
После того как скрипт преодолевает эти ловушки, следующим шагом обычно является... сохраняйте значения, полученные во время выполнения, в переменных. Таким образом, проверки сравнивают данные с реальными данными, а не с жестко закодированными строками.






