selenium的xpath定位
绝对路径:
Xpath的绝对路径使用单斜线 "/"
元素是上一节点的子节点中的一个,不能跳级,查找到的元素紧挨着上面一个元素
相对路径:
Xpath的相对路径用 "//"
下级任何子节点或者任何嵌套元素子节点中的一个,可跳级,在啊HTML节点下任何位置查找元素
一、xpath可以通过元素的 id name class 这些属性来定位
1、用id属性定位
driver.find_element_by_xpath("//tag_name[@id='kw']").send_keys(u"python语言")
# 注意引号的搭配使用,键盘输入中文时,由于脚本使用的是utf-8,windows使用的是ASCII码,使用在输入前加个 “u”
2、用name属性定位
driver.find_element_by_xpath("//tag_name[@name='wd']").send_keys(u"python语言")
3、用class属性定位
driver.find_element_by_xpath("//tag_name[@class='s_ipt']").send_keys(u"python语言")
二、 xpath层级
1、如果一个元素的属性不是很明显,无法直接定位到,这时候可以找它老爸(元素)
2、找到它老爸后,再找下一个层级就能定位到了
<form id="form">
<span id ="s_kw_wrap">
<input id="kw">
如上代码,要定位的是 input标签,通过层级关系定位 input 标签
driver.find_element_by_xpath("//span[@id='s_kw_wrap']/input").send_keys("python")
driver.find_element_by_xpath("//form[@id='form']/span/input").send_keys("python")
三、xpath的索引
如果一个元素他的兄弟元素跟它的标签一样,无法通过层级定位到,可以通过索引来定位 (索引从1开始算)
<select id="nr" name="NR">
<option selected="" value="10">每页显示10条</option>
<option value="20">每页显示20条</option>
<option value="50">每页显示50条</option>
</selected>
driver.find_element_by_xpath("//select[@id='nr']/option[1]") # 定位 每夜显示10条的元素
driver.find_element_by_xpath("//select[@id='nr']/option[2]") # 定位 每夜显示20条的元素
driver.find_element_by_xpath("//select[@id='nr']/option[3]") # 定位 每夜显示50条的元素
四、xpath的逻辑运算
1、xpath可以多个属性逻辑运算,可以支持and(与)、or(或)、not(非)
2、一般用的比较多的是 and 运算,同时满足两个属性
driver.find_element_by_xpath("//select[@id='nr' and @name='NR']")
五、xpath的模糊匹配
1、模糊匹配功能
driver.find_element_by_xpath("//tag_name[contains(text(),'hao123')]").click()
2、模糊匹配某个属性
driver.find_element_by_xpath("//tag_name[contains(@id,'kw')]").click()
3、模糊匹配以什么开头
driver.find_element_by_xpath("//tag_name[starts-with(@id,'s_kw_wrap')]").click()
4、模糊匹配以什么结尾
driver.find_element_by_xpath("//tag_name[ends-with(@id,'s_kw_wrap')]").click()
5、正则表达式
driver.find_element_by_xpath("//tag_name[matchs(text(),'hao123')]").click()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)