使用自定义值在Selenium中定位元素

时间:2015-01-16 18:27:05

标签: python selenium selenium-webdriver

我正在使用一个网页,该网页需要一些自动化,并且由于其结构而无法与某些元素进行交互。简要说明:

<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和name: http://selenium-python.readthedocs.org/en/latest/locating-elements.html

但是,是否可以通过自定义值指定查找内容,例如此示例&#34; data-title&#34;?

3 个答案:

答案 0 :(得分:4)

您可以使用CSS选择任何属性,这是公式的样子:

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

根据你的例子,它将是:

li[data-title='Ticket Grid']

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

答案 1 :(得分: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>

答案 2 :(得分:0)

您可以使用:

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