#robotframework #selenium2library
#robotframework #selenium2library
Вопрос:
Пытаюсь проверить, содержит ли элемент определенный текст, но ключевое слово Element Should Contain
не находит текст, даже если я явно указываю в атрибуте xpath, что он содержит текст. Однако ключевое слово Wait Until Page Contains Element
работает.
Запустил приведенный ниже скрипт и получил следующие результаты
#this was successful
Wait until Page Contains Element xpath://div[@id="header"]//span[contains(text(), "text")]
#this resulted to: should have contained text 'text' but its text was ''
Element Should Contain xpath://div[@id="header"]//span[contains(text(), "text")] text
Комментарии:
1. Содержит ли этот элемент ровно текст из четырех символов или в нем содержится больше информации, чем это?
2. Элемент действительно содержит больше символов, таких как «это текст». Но это не должно иметь значения, верно? Поскольку
Element Should Contain
, насколько я понимаю, проверяет только то, что элемент содержит текст, а не проверяет, точно ли это текст.3. @E.Как.P. Согласно документам SeleniumLibrary: «Используйте ‘Текст элемента должен быть’, если вы хотите соответствовать точному тексту, а не подстроке.», вы правы.
Ответ №1:
Есть разница между Element Should Contain
и Wait until Page Contains Element
.
Первый будет проверять только, содержит ли в данный момент DOM элемент с подстрокой этого текста, в то время как последний будет ждать (по умолчанию) до 5 секунд появления этого элемента в DOM, чтобы проверить, существует ли он. Или, перефразируя: первый проверяет правильность условия, другой прослушивает изменения в DOM, чтобы определить необходимое значение. Возможно, ваш текст отображается через некоторое время загрузки?
Из документации:
Element Should Contain
:
Проверяет, что указатель элементов содержит ожидаемый текст. … Используйте текст элемента, если вы хотите соответствовать точному тексту, а не подстроке.
Wait Until Page Contains Element
:
Ожидает, пока на текущей странице не появится указатель элемента. Сбой, если время ожидания истекает до появления элемента.
Комментарии:
1. Привет, ты прав. На самом деле я пытаюсь проверить текст во всплывающей подсказке, которая появляется после того, как я наведу курсор мыши. Итак, что я сделал, так это выполнил
Mouse Over
,Wait Until Page Contains Element
затемElement Should Contain
.
Ответ №2:
Удалось решить эту проблему. Сценарий был фактически правильным, единственная проблема заключалась в том, что был аналогичный xpath, который также появляется всякий раз, когда я выполняю «Наведение курсора мыши» (что я делаю, потому что я пытался проверить всплывающую подсказку). Таким образом, результатом было возвращение 2 элементов, которые платформа robot не может проверить, если они не различаются.
Спасибо всем за вклад.
Ответ №3:
При попытке проверить текст, если он правильный, вы можете сделать что-то вроде этого:
Run Keyword And Continue On Failure Element Text Should Be XPATH TEXT
Вы также можете оставить первую часть, если хотите, чтобы тест был остановлен, если текст не в порядке.
Element Text Should Be XPATH TEXT