Получить определенный элемент в веб-драйвере, содержащий текст - PullRequest
4 голосов
/ 20 марта 2012

Каковы некоторые хорошие способы получения определенного элемента в WebDriver / Selenium2 только на основе текста внутри элемента?

<div class="page">
  <ul id="list">
    <li>Apple</li>
    <li>Orange</li>
    <li>Banana</li>
    <li>Grape</li>
  </ul>
</div>

По сути, я хотел бы написать что-то вроде этого, чтобы получить конкретный элементelement:

@driver.find_element(:id, "list").find_element(:text, "Orange")

Это очень похоже на то, как я использовал бы селектор при поиске текста внутри ссылки (т.е. :link_text или :partial_link_text), но я хотел бы найти элементы по тексту внутри обычного, не связанные элементы.

Есть предложения?Как вы справляетесь с этой проблемой?(Если вам интересно, я использую Ruby.)

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

Вы можете сделать это с помощью xPath.Примерно так на вашем примере:

@driver.find_element(:id, "list").find_element(:xpath, './/*[contains(., "Orange")]')
3 голосов
/ 15 мая 2014

Через пару лет, но я собирался задать этот вопрос и ответить на него, чтобы другие могли его найти ...

Я использовал селектор css, чтобы получить все элементы li, а затем отфильтровал массив на основе текста:

@driver.find_elements(css: '#list > li').select {|el| el.text == 'Orange'}.first

Затем вы можете .click или .send_keys :return, чтобы выбрать опцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...