获取包含文本的webdriver中的特定元素

时间:2012-03-20 19:22:48

标签: ruby selenium webdriver

仅根据元素内的文本检索WebDriver / Selenium2中的特定元素有哪些好方法?

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

基本上,我想写这样的东西来检索特定的元素:

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

这与在链接中查找文本时使用选择器的方式非常相似(即:link_text:partial_link_text),但我希望在正常的非链接中按文本查找元素元素。

有什么建议吗?你是如何处理这个问题的? (如果你想知道,我正在使用Ruby。)

2 个答案:

答案 0 :(得分:7)

你可以用xPath做到这一点。你的例子就像这样:

@driver.find_element(:id, "list").find_element(:xpath, './/*[contains(., "Orange")]')

答案 1 :(得分:3)

迟了几年,但我只是想问这个问题并回答它,以便其他人可以找到它......

我使用css选择器获取所有li元素,然后根据文本过滤数组:

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

然后,您可以.click.send_keys :return选择该选项。