2015-01-16 46 views
1

我正在處理需要一些自動化功能並且由於其結構而與特定元素進行交互時遇到問題的網頁。簡單的例子:使用自定義值在Selenium中查找元素

<ul> 
<li data-title="Search" data-action="search"> 
<li class="disabled" data-title="Ticket Grid" data-action="ticket-grid"> 
<li data-title="Create Ticket" data-action="create"> 
<li data-title="Settings" data-action="settings"> 
</ul> 

我知道這裏列出像ID和名稱的所有定位策略: http://selenium-python.readthedocs.org/en/latest/locating-elements.html

然而,有沒有指定找到一個自定義值在這個例子類似「的方式數據標題「?

回答

4

您可以使用CSS選擇任何屬性,這是公式的樣子:

element[attribute(*|^|$|~)='value'] 

按照您的例子,那就是:

li[data-title='Ticket Grid'] 

(源http://ddavison.io/css/2014/02/18/effective-css-selectors.html

+0

謝謝,這似乎是最好的方式! – GatesOfDelirium

+0

@GatesOfDelirium:如果這能幫助你,請將它標記爲答案和/或註冊。這將有助於其他面臨類似問題的人..謝謝.. :) – Subh

0

您可以使用:

"//li[@data-title='Ticket Grid']" 
+0

這工作,但似乎像CSS方法可能處理更深的嵌套元素更好。 – GatesOfDelirium

2

如果有多種可能性,也值得知道下面的選項

from selenium.webdriver import Firefox 

driver = Firefox() 
driver.get(<your_html>) 

li_list = driver.find_elements_by_tag_name('li') 
for li in li_list: 
    if li.get_attribute('data-title') == '<wanted_value>': 
     <do_your_thing> 
+0

適合多種可能性 –

相關問題