Выберите элемент Selenium на основе текста во вложенных тегах - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в Selenium. Это мой HTML код -

<a href="#">
   <span>Print</span>
</a>

Используя Selenium, я хотел бы найти элемент <a>, содержащий <span>, а внутри <span> текст - "Print". На странице есть только один такой элемент.

 driver.findElement(By.cssSelector("a[text()='Print']"))

Код выше, похоже, не работает. Как мне включить <span> в приведенный выше код?

Jquery Эквивалент того, что я пытаюсь достичь, - $( "a > span:contains('Print')" )

Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Вы можете использовать Xpath для достижения этой цели:

WebElement el = driver.findElement(By.xpath("//a/span[text()='Print']"))

Чтобы сделать его более надежным, в случае, если span не является непосредственным дочерним элементом тега, и текст может иметь начальные завершающие пробелы / символы, которые вы можете использовать. использование:

WebElement el = driver.findElement(By.xpath("//a//span[contains(text(),'Print')]"))
0 голосов
/ 29 апреля 2020

Как уже упоминалось, в селекторе css пока нет опции для идентификации элемента по текстовому значению.

Я бы предложил использовать XPATH.

Для идентификации тега привязки. на основе дочернего тега попробуйте следующие параметры xpath.

driver.findElement(By.xpath("//a[./span[text()='Print']]"))

ИЛИ

driver.findElement(By.xpath("//a[contains(.,'Print')]"))
0 голосов
/ 29 апреля 2020

Примерно так можно попробовать

driver.findElement(By.tagName("a")).findElement(By.tagName("span")).getText();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...