网站首页 > 技术文章 正文
按次序选择
前面学过css表达式可以根据元素在父节点中的次序选择,非常实用。
xpath也可以根据次序选择元素。语法比css更简洁,直接在方括号中使用数字表示次序
比如
某类型第几个子元素
比如要选择p类型第2个的子元素,就是
br//p[2]
注意,选择的是 p类型第2个的子元素 ,不是 第2个子元素,并且是p类型 。
注意体会区别
再比如,要选取父元素为div中的p类型第2个子元素
//div/p[2]
第几个子元素
也可以选择第2个子元素,不管是什么类型,采用通配符
比如选择父元素为div的第2个子元素,不管是什么类型
br//div/*[2]
某类型倒数第几个子元素
当然也可以选取倒数第几个子元素
比如:
选取p类型倒数第1个子元素
br//p[last()]
选取p类型倒数第2个子元素
br//p[last()-1]
选择父元素为div中p类型倒数第3个子元素
br//div/p[last()-2]
范围选择
xpath还可以选择子元素的次序范围。
比如:
选取option类型第1到2个子元素
//option[position()<=2]
或者
//option[position()<3]
选择class属性为multi_choice的前3个子元素
//*[@class='multi_choice']/*[position()<=3]
选择class属性为multi_choice的后3个子元素
//*[@class='multi_choice']/*[position()>=last()-2]
不是 last()-3 的原因为:
last() 本身代表最后一个元素
last()-1 本身代表倒数第2个元素
last()-2 本身代表倒数第3个元素
组选择、父节点、兄弟节点
组选择
css有组选择,可以同时使用多个表达式,多个表达式选择的结果都是要选择的元素
css组选择,表达式之间用逗号 隔开
xpath也有组选择,使用竖线 隔开多个表达式
比如,要选所有的option元素和所有的h4元素,可以使用
//option|//h4
等同于CSS选择器
option,h4
再比如,要选所有的class为single_choice和class为multi_choice的元素,可以使用
//*[@class='single_choice']|//*[@class='multi_choice']
等同于CSS选择器
.single_choice,.multi_choice
选择父节点
xpath可以选择父节点,这是css做不到的。
某个元素的父节点用 /.. 表示
比如,要选择id为china的节点的父节点,可以这样写:
//*[@id='china']/..
当某个元素没有特征可以直接选择,但是它有子节点有特征,就可以采用这种方法,先选择子节点,再指定父节点。
还可以继续找上层父节点,比如:
//*[@id='china']/../../..
兄弟节点选择
前面学过css选择器,要选择某个节点的后续兄弟节点,用 波浪线
xpath也可以选择后续兄弟节点,用这样的语法
follow-sibling::
比如,要选择class为single_choice的元素的所有后续兄弟节点
//*[@class='single_choice']/following-sibling::*
等同于CSS选择器:
.single_choice~*
如果,要选择后续节点中的div节点,就应该这样写:
//*[@class='single_choice']/following-sibling::div
xpath还可以选择 前面的 兄弟节点,用这样的语法:
preceding-sibling::
比如,要选择class为single_choice的元素的所有后续兄弟节点
//*[@class='single_choice']/preceding-sibling::*
而CSS选择器目前还没有方法选择前面的兄弟节点。
Selenium注意点
举例代码:
先选择示例网页中,id是china的元素
然后通过这个元素的WebElement对象,使用find_elements_by_xpath,选择里面的p元素
#先寻找id为china的元素
china=wd.find_element_by_id('china')
#再选择该元素内容的p元素
elements=china.find_elements_by_xpath('//p')
#打印结果
for element in elements:
print('-------------------')
print(element.get_attribute('outerHTML'))
运行发现,打印的不仅仅是china内部的p元素,而是所有的p元素。
要在某个元素内部使用xpath选择元素,需要 在xpath表达式最前面加个点 。
elements=china.find_elements_by_xpath('.//p')
- 上一篇: JavaScript 兄弟节点的兼容性函数
- 下一篇: 相邻兄弟选择器用什么符号连接两个元素
猜你喜欢
- 2024-10-25 《王牌部队》高粱拿了“喜剧人”剧本,笑点泪点都被他承包了
- 2024-10-25 纯爱小说推荐|生活所迫,我只能把你的后宫变成我的兄弟了
- 2024-10-25 占星秒懂|宫位的形成与解析(下) 宫位意思
- 2024-10-25 农村兄弟建双拼更有气势还省钱,2020年超受欢迎的双拼户型分享
- 2024-10-25 我爸说,“你没有结婚,我在村子里比做贼还丢人!”
- 2024-10-25 「漫步计算机系统」之数据结构与算法(18):红黑树结点的删除
- 2024-10-25 IT兄弟连 HTML5教程 CSS3揭秘 CSS3概述
- 2024-10-25 通过css类/选择器选取元素 文档结构和遍历 元素树的文档
- 2024-10-25 琅琊榜:兄弟之情,远比男女之情更加动人
- 2024-10-25 参加兄弟婚礼祝福语 参加兄弟婚礼祝福语简短
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)