selenium元素定位之CSS选择器语法汇总

python+selenium元素定位中,css表达式功能非常强大,其强大之处在于:可以任意组合,联合使用获取元素,以下是结合各方资料学习后,整理的语法汇总。

from selenium import webdriver
wb = webdriver.Chrome()
wb.get("http://www.baidu.com")
#窗口最大化
wb.maximize_window()
#添加等待时间
wb.implicitly_wait(5)

1、选择单个元素&选择多个元素
选择单个元素语法:find_element_by_css_selector()
选择多个元素语法:find_elements_by_css_selector()
多个元素时,通过for循环依次取出列表中元素

#1、选择单个元素
element = wb.find_element_by_css_selector('#s_top_wrap')
print(element)

#2、选择多个元素
elements = wb.find_elements_by_css_selector('#u > a')
#elements下有多个a标签,这里可用for循环依次取出
for element in elements:
    # print(element)
    # print(element.get_attribute('innerText'))
    print(element.get_attribute('textContent'))
输出结果为:
<selenium.webdriver.remote.webelement.WebElement (session="8047608c29e9e720e5f32ff7aba1245b", element="0.8778657659422606-3")>
百度首页
设置
登录

2、选择父元素的直接子元素(父元素 > 子元素)
父元素的直接子元素指的是:父元素的直接下一级子节点,例如:元素2是元素1的直接下一级子节点,那么元素2就是元素1的直接子元素
如下图:

语法是:父元素 > 子元素

# 2、选择父元素的直接子元素
elements = wb.find_elements_by_css_selector('#s-top-left > a')
for element in elements:
    print(element.get_attribute('textContent'))
输出结果:
新闻
hao123
地图
视频
贴吧
学术

3、选择父元素的后代元素(父元素 子元素)
语法:父元素(空格)子元素
父元素和子元素之间用空格隔开

element = wb.find_element_by_css_selector('.s-top-more .c-font-normal')
print(element.get_attribute('textContent'))
输出结果:
网盘

4、通过属性选择元素
语法:使用中括号[]

# 4、通过属性选择元素
element = wb.find_element_by_css_selector('[href="http://tieba.baidu.com"]')

5、选择多种元素
语法:用逗号隔开

# 5、选择多种元素
elements = wb.find_elements_by_css_selector('.toindex,.pf')
for element in elements:
    print(element.get_attribute('textContent'))

输出结果:
<selenium.webdriver.remote.webelement.WebElement (session="165ab0827f6f29711e6f78dbdbf19f05", element="0.31190656078979373-11")>
百度首页
设置

6、选择父元素的第N个子节点
语法: 标签:nth-child(n)
如下图:获取i标签的第2个子节点元素:i:nth-child(2)

# 6、选择父元素的第N个子节点
elements = wb.find_elements_by_css_selector('i:nth-child(2)')
print(elements)

7、选择父元素的倒数第N个子节点
语法: i:nth-last-child(2)

# 7、选择父元素的倒数第N个子节
element = wb.find_element_by_css_selector('i:nth-last-child(2)')
print(element)

8、选择父元素的第N个某种类型的子节点
语法: i:nth-of-type(1)

# 8、选择父元素的某种类型的子节点
elements = wb.find_elements_by_css_selector('i:nth-of-type(1)')

9、选择父元素下的奇数和偶数元素
语法:
偶数:标签:nth-child(even)
奇数:标签:nth-child(odd)

# 9、选择父元素下的奇数和偶数元素
#父元素下的偶数子节点元素
elements = wb.find_elements_by_css_selector('li:nth-child(even)')
#父元素下的奇数子节点元素
elements = wb.find_elements_by_css_selector('li:nth-child(odd)')

10、选择兄弟节点
语法:
紧邻兄弟节点:标签1 + 标签2
后面所有兄弟节点:标签1 ~ 标签2

# 10、选择兄弟节点
#div下的紧邻a标签
elements = wb.find_elements_by_css_selector('div+a')
#div下的所有a标签
elements = wb.find_elements_by_css_selector('div~a')

以上是参考网上视频资料等整理,后面如有新增,我会持续更新,如有不妥之处,欢迎小伙伴们指正~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。