使用自定义值在 Selenium 中定位元素
Locating an element in Selenium with a custom value
我正在处理一个网页,该网页需要一些自动化并且由于其结构而无法与某些元素进行交互。简要示例:
<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
但是,有没有办法像本例中那样通过自定义值指定查找内容"data-title"?
您可以使用:
"//li[@data-title='Ticket Grid']"
您可以使用 CSS 到 select 任何属性,这就是公式的样子:
element[attribute(*|^|$|~)='value']
根据您的示例,它将是:
li[data-title='Ticket Grid']
(来源http://ddavison.io/css/2014/02/18/effective-css-selectors.html)
如果有多种可能性,还值得了解以下选项
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>
我正在处理一个网页,该网页需要一些自动化并且由于其结构而无法与某些元素进行交互。简要示例:
<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
但是,有没有办法像本例中那样通过自定义值指定查找内容"data-title"?
您可以使用:
"//li[@data-title='Ticket Grid']"
您可以使用 CSS 到 select 任何属性,这就是公式的样子:
element[attribute(*|^|$|~)='value']
根据您的示例,它将是:
li[data-title='Ticket Grid']
(来源http://ddavison.io/css/2014/02/18/effective-css-selectors.html)
如果有多种可能性,还值得了解以下选项
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>