Невозможно найти Xpath для динамического текста - PullRequest
0 голосов
/ 18 мая 2018

Я пишу некоторые тесты автоматизации Selenium UI и в настоящее время я работаю над разделом, в котором могут появляться несколько сообщений проверки в зависимости от ответа исходной системы.У меня есть несколько разных сообщений для запуска.

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

<span id="lblErrorText" class="validationError">
    "My error message will appear here"
</span>

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

By errorMessage  = By.xpath("//span[@class='validationError']");

Затем я использую errorMessage в методе, чтобы вернуть его как логическое значение, чтобы я мог утверждать против.Следующее:

public boolean getInvalidRefNumberErrorMessage(){
    return driver.findElements(errorMessage).contains("My error message will");
}

Но каждый раз, когда я запускаю свой тест, я вижу, что метод getInvalidRefNumberErrorMessage возвращает FALSE.

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

1 Ответ

0 голосов
/ 18 мая 2018

Кажется, в вашем коде есть неправильные места, если они не являются ошибкой копирования / вставки.

  1. Следует использовать findElement, а не findElements, которые возвращают List.
  2. Должен позвонить getText(), чтобы вернуть содержимое сообщения как String, затем позвонить String.contains()

    public boolean getInvalidRefNumberErrorMessage(){
        return driver.findElement(errorMessage).getText()
                     .contains("My error message will");
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...