如何使用 cssSelector Python 和 Selenium find_elements 具有多个属性
How to find_elements with multiple attributes using cssSelector Python and Selenium
我正在尝试查找 <div id="contents" ...>
中具有 <a href=....>
的所有元素
这里是 HTML 代码:
<div id="contents" class="style-scope">
<div id="dismissible" class="style-scope">
<a id="thumbnail" href="http://www.test.com">
这是我的 python 代码:
items = driver.find_elements(By.cssSelector("div[id="contents"] a[id="thumbnail"]"))
它给我错误:
SyntaxError: invalid syntax. Perhaps you forgot a comma?
我需要把逗号放在哪里?
这是一个语法相关的错误。您正在尝试列出包含不同 HTML 的网络元素?
items = driver.find_elements(By.CSS_SELECTOR,"a#thumbnail")
这个错误信息...
SyntaxError: invalid syntax. Perhaps you forgot a comma?
...表示您使用的 包含 SyntaxError.
深入探讨
css-selectors有两种写法如下:
要么在单引号内提及属性值,即 '...'
,要么在双引号内提及整个定位器,即 "..."
。示例:
"tag_name[attribute_name='attribute_value']"
或者您提到双引号内的属性值,即 "..."
和单引号内的整个定位器,即 '...'
。示例:
'tag_name[attribute_name="attribute_value"]'
解决方案
要识别 <div id="contents" ...>
内具有 <a href=....>
的所有元素,您可以使用以下 :
elements = driver.find_elements(By.CSS_SELECTOR, "div[id='contents'] a[href]")
但是,如果 css_selector:
- class 属性可以缩写为
.element_class
- id 属性可以缩写为
#element_id
准确地说,您的定位器策略可以是:
elements = driver.find_elements(By.CSS_SELECTOR, "div#contents a[href]")
变得细化
为了更加规范,您可能还想考虑 <a>
元素的 id
属性,即 thumbnail
。因此 实际上是:
elements = driver.find_elements(By.CSS_SELECTOR, "div#contents a#thumbnail[href]")
我正在尝试查找 <div id="contents" ...>
<a href=....>
的所有元素
这里是 HTML 代码:
<div id="contents" class="style-scope">
<div id="dismissible" class="style-scope">
<a id="thumbnail" href="http://www.test.com">
这是我的 python 代码:
items = driver.find_elements(By.cssSelector("div[id="contents"] a[id="thumbnail"]"))
它给我错误:
SyntaxError: invalid syntax. Perhaps you forgot a comma?
我需要把逗号放在哪里?
这是一个语法相关的错误。您正在尝试列出包含不同 HTML 的网络元素?
items = driver.find_elements(By.CSS_SELECTOR,"a#thumbnail")
这个错误信息...
SyntaxError: invalid syntax. Perhaps you forgot a comma?
...表示您使用的
深入探讨
css-selectors有两种写法如下:
要么在单引号内提及属性值,即
'...'
,要么在双引号内提及整个定位器,即"..."
。示例:"tag_name[attribute_name='attribute_value']"
或者您提到双引号内的属性值,即
"..."
和单引号内的整个定位器,即'...'
。示例:'tag_name[attribute_name="attribute_value"]'
解决方案
要识别 <div id="contents" ...>
内具有 <a href=....>
的所有元素,您可以使用以下
elements = driver.find_elements(By.CSS_SELECTOR, "div[id='contents'] a[href]")
但是,如果 css_selector:
- class 属性可以缩写为
.element_class
- id 属性可以缩写为
#element_id
准确地说,您的定位器策略可以是:
elements = driver.find_elements(By.CSS_SELECTOR, "div#contents a[href]")
变得细化
为了更加规范,您可能还想考虑 <a>
元素的 id
属性,即 thumbnail
。因此
elements = driver.find_elements(By.CSS_SELECTOR, "div#contents a#thumbnail[href]")