【问题标题】:Get specific element in webdriver containing text获取包含文本的 webdriver 中的特定元素
【发布时间】:2012-03-20 19:22:48
【问题描述】:

在 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。)

【问题讨论】:

    标签: ruby selenium webdriver


    【解决方案1】:

    您可以使用 xPath 做到这一点。你的例子是这样的:

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

    【讨论】:

    • 谢谢。根本不想使用 xpath,但仍然感谢您的大力响应!
    • 不知道你可以链接find_element,我假设它只搜索第一个元素的子元素......很好。 ;)
    • 是的,在驱动程序上调用 find_element 从根开始,而在元素上调用它则从该元素开始。我认为 XPath 可以覆盖它(所以如果 '.' 不在 XPath 的开头,它可能仍会按照 // 的指示从文档根目录开始),但我记不太清了现在。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多