xpath 选择器 转 html,xpath选择器

xpath选择器介绍

xpath全名叫 xml path language (xml路径语言)

从xpath的视角来看,xml或html文档就是文件系统结构,元素节点可以看作其中某一个文件

在HTML文档中,以html标签作为根节点,整个文档的形式可以看作一个树形结构。

xpath比css多一点功能比如父元素选择器

移动应用自动化也同样支持xpath

xpath写法

绝对路径

以/开始,逐个增加节点名称用/分割

举例:

/html/body/div/p

相对路径:

写法很简单://

举例:

//div//p

表示footer元素中所有的后代p类型元素

-通配符

*表示所有节点,与css相同

根据属性选择:

属性用[]包裹,属性名加@,属性值加引号。

例:

//div[@style]

//div[@spec='t2']

//a[contains(@id,'haha')] a标签id包含haha

//a[starts-with(@id,'xixi')] a标签以xixi开头

//a[ends-with(@id,'hehe')] a标签以hehe结尾 目前浏览器还不支持这种写法

子元素选择器

//div[@id='haha']/p[2]

取最后一个:

//div[@id='haha']/p[last()]

倒数第二、第三用:

//div[@id='haha']/p[last()-1]

//div[@id='haha']/p[last()-2]

postion()的用法

表示第几个元素除了可以用[1]还可以

//div[@id='haha']/*[position()=1]

这里positon()就是代表元素的位置,这种写法也是xpath中的一部分

高级用法:

//div[@id='haha']/p[position() = last()] 表示最后一个元素

//div[@id='haha']/p[position()!=last()-1] 表示除了倒数第二个元素

//div[@id='haha']/p[position()>=last()-2] 表示最后三个元素

//div[@id='haha']/p[position()>1 and position()<=last()-2] 表示第二个到倒数第三个之间

//div[@id='haha']/p[position()=last()-2 or position()=2] 表示倒数第三个或者第二个

组选择器:

xpath中用 | 隔开

例:

//div[@id='haha'] | //div[@id='hehe']

相邻兄弟选择器

举例,xpath表示相邻兄弟的方法

//div[id='haha']/following-sibling::div

表示id为haha的div相邻兄弟节点(后)

向前兄弟选择:

//div[id='hehe']/preceding-sibiling::div

父元素选择器

在xpath里面还可以选择指定元素的父元素,css不支持这种方法

//div[id='haha']/..

可以获取父元素以此类推获取父元素的父元素

webelement相对定位法

比如我想获取id为food的元素,然后用获取到元素继续找他下面的子节点,比如我想获取p节点,然后通过xpath//p来获取

这里注意了,如果我这么写了,即使我用的是food元素来获取的,其实他获取的元素范围还是整个html页面的p元素,和用driver获取的效果是一样的如果我想获取的是food这个元素范围内的呢,大家就要在这个表达式前面加一个点,这个点表示在当前的元素范围内。

例:

food = driver.find_element_by_id('food')

food.find_elements_by_xpath('./p')

如果不加点:

food.find_elements_by_xpath('/p')

driver.find_elements_by_xpath('/p')

效果相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值