Selenium WebDriver - как проверить текст из нескольких строк

У меня есть html-страница со следующим содержимым:

    <center> 
          This is Login page. 
          <br> 
          Please click below link to Login.
          <br> 
          <a href="xxx">Login</a> 
    </center>

Как я могу проверить весь статический текст выше с помощью одной команды веб-драйвера?

Я пробовал эти, но ничего не работает :(

driver.findElement(By.xpath("//*[contains(.,'This is Login page.<br>Please click below link to Login')]"))
driver.findElement(By.xpath("//*[contains(.,'This is Login page.\nPlease click below link to Login')]"))

Кто-нибудь знает, как это сделать?


person qa_enq    schedule 22.05.2012    source источник


Ответы (4)


Ты можешь сделать:

webDriver.findElement(By.id("<ID of center tag>")).getText().contains("This is Login page.Please click below link to Login.Login");

Не стесняйтесь использовать локатор по вашему выбору вместо By.id.

По сути, getText() любого WebElement возвращает текстовое содержимое узла, лишенное всех тегов HTML и комментариев.

person Ashwin Prabhu    schedule 22.05.2012
comment
Спасибо, Эшвин. Просто узнал, что getText() очень полезен :) - person qa_enq; 23.05.2012

Это больше ограничение XPath, чем Selenium.

Я не понимаю, почему вы используете глобальный селектор XPath, лучшим селектором XPath будет:

By.XPath("//center");

Если это единственный «центральный» тег на странице или даже:

By.XPath("//center[содержит(текст(), 'Это страница входа'")

Символы /r и /n будут сохранены, если вы сделаете это с помощью кода, а не будете искать их вслепую в XPath.

person Arran    schedule 22.05.2012
comment
Я использую глобальный селектор XPath, поскольку он фактически кодируется в моей общей библиотеке для проверки наличия текста. Возможно, в моей общей библиотеке должен быть другой метод для проверки текста на основе определенного тега. Но вернемся к вопросу, означающему, что вместо этого я должен сделать что-то вроде этого: - person qa_enq; 22.05.2012
comment
Да, я бы попытался найти его без включенных символов /r и /n (новая строка и возврат каретки), пошел бы на что-то более простое (например, то, что я сделал выше) и проверил текст после того, как вы получил элемент. Впоследствии будет намного проще проверить его структуру в коде. В противном случае вы можете добавить идентификатор в центральный тег и использовать ответ Ашвина. - person Arran; 22.05.2012

Как найти тексты, если между текстами есть пробел.

      <br> 
        <br/>
      Please click below link to Login.
      <br> 
      <a href="xxx">Login</a> 
</center>
person Bibek    schedule 26.11.2013
comment
Нашел решение на другой странице. Если у кого-то такая же проблема, как у меня. используйте эту ссылку: groups.google.com/forum/#!topic/ selenium-users/brPeac2QTvs и решение: Assert.assertEquals(адрес электронной почты пуст.\nПожалуйста, введите адрес электронной почты!,driver.findElement(By.xpath(XXXXXXXX)).gettext()); - person Bibek; 26.11.2013

Вы можете сделать с "\n"

return getText(supportText).contains("Information:" + "\n" +
    "This page is for use by the TECHNICAL TEAM only. Following links will be active, only if you have access (subscription) to those modules.");
person Sri Janya    schedule 30.10.2018