Тест Selenium RC проходит, когда он должен провалиться на verifyTrue (selenium.isTextPresent ("string")) - PullRequest
3 голосов
/ 05 января 2011

У меня есть набор тестов Selenium, которые я создал в Selenium IDE и перенес на Java.В нескольких тестах я использую Java-эквивалент команды verifyTextPresent для подтверждения некоторого текста на странице (verifyTrue(selenium.isTextPresent())).

Я обнаружил орфографическую ошибку в тексте на странице при запуске теста изIDE, но ошибка не была обнаружена при запуске теста через Selenium RC / TestNG.Вот пример кода, который у меня есть, и текста, который вызывает проблему (орфографическая ошибка выделена жирным шрифтом):

Текст:

Пожалуйста, исправьте ошибки, указанные ниже.

Необходимо добавить a хотя бы одно ограничение.

IDE:

verifyTextPresent | Please correct the errors indicated below.
verifyTextPresent | You need to add at least one restriction.

Java:

verifyTrue(selenium.isTextPresent("Please correct the errors indicated below."));
verifyTrue(selenium.isTextPresent("You need to add at least one restriction."));

Поскольку обе версии теста имеют правильный текст, почему версия Selenium RC не улавливает ошибку?У кого-нибудь еще была такая проблема?

Ответы [ 2 ]

5 голосов
/ 05 января 2011

Причина, по которой это происходит, заключается в том, что тест продолжает выполняться после вызова verifyTrue().Проверки в Selenium улавливают исключения, которые будут выброшены при неудачной проверке, в отличие от утверждения, которое выдает исключение и приводит к сбою теста.Поскольку проверки перехватывают исключения, а не выдают их, тест проходит.

В конце теста необходимо вызвать метод checkForVerificationErrors(), чтобы проверить, не прошла ли какая-либо из проверок.Если метод не вызывается, любые ошибки проверки будут игнорироваться, и тест все равно будет проходить (при отсутствии каких-либо других проблем).

Обсуждение самой ошибки в группе Google Selenium: здесь .Обсуждение различных проверок и утверждений здесь .

3 голосов
/ 05 января 2011

У меня была похожая проблема ... Мой обходной путь - использовать assertTrue () вместо verifyTrue (). Я надеюсь, что это работает для вас.

...