Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 获取webdriver中包含文本的特定元素_Ruby_Selenium_Webdriver - Fatal编程技术网

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

Ruby 获取webdriver中包含文本的特定元素,ruby,selenium,webdriver,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> 这

在WebDriver/Selenium2中,有哪些好方法可以仅基于元素内部的文本检索特定元素

<div class="page">
  <ul id="list">
    <li>Apple</li>
    <li>Orange</li>
    <li>Banana</li>
    <li>Grape</li>
  </ul>
</div>
这与我在查找链接中的文本时使用选择器的方式非常相似(即
:link\u text
:partial\u link\u text
),但我希望在正常的非链接元素中按文本查找元素


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

您可以使用xPath实现这一点。以下是您的示例:

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

几年后,但我只是想问这个问题并回答它,这样其他人就可以找到它

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

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

然后您可以
。单击
。发送键:返回
以选择选项。

谢谢。我不想使用xpath,但还是要感谢您的回复!不知道您可以连锁
查找\u元素
,我假设它只搜索第一个元素的子元素。。。不错是的,在驱动程序上调用find_元素从根开始,而在元素上调用find_元素则从该元素开始。我认为XPath可以覆盖这一点(因此,如果“.”不在XPath的开头,它可能仍然按照//的指示从文档根开始),但我现在记不清了。
@driver.find_elements(css: '#list > li').select {|el| el.text == 'Orange'}.first