2012-03-20 96 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

相關問題