webdriver的API与定位元素(2)
此处以“菜鸟教程”网页举例,先打开菜鸟教程首页https://www.runoob.com/,再打开“菜鸟笔记”tab
>>> from selenium import webdriver
>>> b = webdriver.Chrome()
>>> b.get('https://www.runoob.com/')
>>> b.maximize_window() #最大化窗口
<a href="//www.runoob.com/w3cnote/" target="_blank" data-id="note" title="菜鸟笔记">菜鸟笔记</a>
⑤find_element_by_link_text()
有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link_text定位。
ele = b.find_element_by_link_text('菜鸟笔记')
ele.click()
⑥find_element_by_partial_link_text()
通过部分链接定位
ele = b.find_element_by_partial_link_text('笔记')
ele.click()
⑦find_element_by_xpath()参考链接
XPath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大语言在web应用中定位元素。XPath扩展了上面id和name定位方式,提供了很多种可能性,比如定位页面上的第三个多选框。
表达式 | 结果 |
/xxx | 选取根节点xxx |
/xxx/yyy | 根据绝对路径选择元素 |
//xxx | 整个文档扫描,找到所有xxx元素 |
//xxx/yyy | 所有父元素为xxx的yyy元素 |
. | 选取当前节点的父元素节点 |
.. | 选取父元素地址 |
//xxx[@id] | 选取所有xxx元素中有id属性的元素 |
//xxx[@id=yyy] | 选取所有xxx元素id属性为yyy的元素 |
⑧find_element_by_css_selector()
CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。这些选择器可以被selenium用作另外的定位策略。CSS的比较灵活可以选择控件的任意属性。
- 复制相关控件的css路径:右键控件——检查,自动定位——右键该行,Copy,Copy selector
ele = b.find_element_by_css_selector('#index-nav > li:nth-child(2) > a')
ele.click()
- 后代或平级关系来选择元素 详见链接
父元素:
(#)表示通过 id 属性来定位元素
(.)表示通过 class 属性来定位元素
子元素(后代关系)
#choose_car option 含空格的,后面的元素不必是前面元素的直接子元素,只要在父元素的里面
.s_ipt_wr span
#choose_car > option 含>键的, 后面的元素必须是前面元素的直接子元素
.s_ipt_wr > span
ul > ol > li > em 可以是很多级的父子关系
组合型
#food > span , p 选择id 为food的所有span子元素和所有的p(包括非food的子元素)
#food > span , #food > p 选择id为food的所有span子元素和所有p子元素
#food > * 选择id为food的所有子元素
兄弟节点的选择 (平级关系)
#food + div 只选择id为food紧跟后面的div
#food ~div 选择id为food后面的div或div们,只需要在id的后面,不需要紧跟
- 根据元素的属性及属性值来选择元素详见链接
*[style] 选择所有有stype属性的元素
p[spec=len2] 选择spec属性值只等于len2的p元素
yp[spec='len2 len3' ] 选择spec属性值只等于len2 len3的p元素 有空的值一定要加引号
p[spec*='len2'] 选择spec属性值包含len2的p元素
p[spec^='len2'] 选择spec属性值以len2开头的p元素
p[spec&='len2'] 选择spec属性值以len2结尾的p元素
p[class=special][name=p1] 选择class值等于special,并且name值等于p1的p元素
p:nth-child(1) 选择第一个p元素
p:nth-last-child(1) 选择倒数第一个p元素(要保证最后一个元素是p)
举例:ele = b.find_element_by_css_selector('input[type="text"]')
ele = b.find_element_by_css_selector('img[alt="麦子学院三周年"]')
本文地址:https://blog.csdn.net/guo_qingxia/article/details/107147028
上一篇: 荐 Python入门教程