2012-03-20 99 views
4

根据元素内部文本检索WebDriver/Selenium2中特定元素的一些好方法是什么?获取包含文本的webdriver中的特定元素

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

回答

3

几年晚了,但我只是要问这个问题,回答这个问题,以便其他能找到它......

我用CSS选择器来获得所有的li元素,然后过滤基于文本的数组:

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

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

6

你可以用xPath来做到这一点。像这样的事情您例如:

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

谢谢。宁愿不使用xpath,但仍然,感谢伟大的回应! – bbbco 2012-03-20 21:09:54

+0

不知道你可以连锁'find_element',我假设它只搜索第一个元素的子元素...很好。 ;) – erroric 2014-05-15 20:22:50

+1

是的,在驱动程序上调用find_element从根开始,而在元素上调用时则从该元素开始。我认为XPath可以覆盖它(如果'。'不在XPath的开头,它可能仍然从文档根开始,但是我不确定是否正确现在。 – 2014-05-16 04:15:20

相关问题