xpath定位

本文详细介绍了使用Selenium进行网页元素定位的各种CSS选择器方法,包括ID定位、类名定位、属性定位及复杂的层级定位技巧,帮助读者掌握高效、精确的自动化测试定位策略。

1 text
百度搜索
//a[text()=‘百度搜索’]

//a[contains(text(),“搜索”)] --文本模糊定位
把百度设为主页

//a[text()=‘把百度设为主页’]

在这里插入图片描述
一、通过id定位

(1)#kw 定位id=kw的元素

(2)input#kw 定位id=kw的input标签元素

python:driver.find_element_by_css_selector(“input#kw”)

java:driver.findElement(By.cssSelector(“input#kw”))

robotframework:css=input#kw

为什么我要一一举例,就是想说明下,selenium对于支持不同语言,方法组成写法会有一些不同,但是定位路径都是一致的。

二、通过classname定位

说classname定位前,又要操心的说一下啦,在学习css的时候,应该都知道有两种选择器,一种是id选择器,一种是class类选择器,而id用#表示,类选择器用.(点)表示,所以别问我上面id定位的#是什么意思啊。知识点会比较多,所以基础还是比较重要的。

(1).s_ipt 定位class=s_ipt的元素

(2)class=bg s_ipt_wr quickdelete-wrap,类似这种叫复合class,由多个类选择器组成,定位的写法则是:.bg.s_ipt_wr.quickdelete-wrap,所有空格用.(点)代替

三、元素属性定位

(1)input[id=kw]

(2)input[class=s_ipt]

(3)input[id=kw][class=s_ipt]

还支持模糊匹配的,主要是太长的属性值方便使用;以class=bg s_ipt_wr quickdelete-wrap举例:

(1)span[class ^=bg] 匹配所有span标签class属性值bg开头的元素

(2)span[class $=rap] 匹配所有span标签class属性值rap结尾的元素

(3)span[class *=quick] 匹配所有span标签class属性值中间有quick的元素

四、元素层级定位

1、子元素定位(>大于号)

(1)span>input 定位span标签下的input标签

(2)form>span>input 定位form标签下span标签下的input标签

以大于号>为分层,查找元素定位必须一层一层的以>往下写,有多个则匹配多个

2、后代元素(空格)

(1)span input 定位span下所有的input标签,包括span下的所有层次的input,注意不是span下一层的input,是所有

3、元素层级css还支持三个方法,分别是first-child、last-child、nth-child(n)

(1)first-child:第一个后代元素

(2)last-child:最后一个后代元素

(3)nth-child(N):指定第N个后代元素

下面举例:

(1)input:first-child 定位所有层次第一个为input的元素,注意是第一个元素为input标签的

(2)span input:first-child 定位span标签下,第一个为input标签的元素

(3)span :last-child 定位span标签下,最后一个元素

(4)span input:last-child 定位span标签下,最后一个为input标签的元素

(5)span :nth-child(2) 定位span标签下,第二个元素

(6)form.fm>:nth-child(2) 定位form标签,class等于fm下的第二个元素

总结:相对于xpath,css定位会相对来说更复杂,特别是层级的定位,但是其实搞懂两点,以大于号>层次的是一层一层下的,而空格则是后代元素,也就是所有的层。当然css定位组合也是很灵活,具有很多可变性,非常实用。
————————————————
版权声明:本文为优快云博主「雨墨轩痕」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/ouyanggengcheng/article/details/77197294

### 使用XPath进行元素定位的方法 XPath是一种在XML文档中查找信息的语言,它也可以用于HTML文档中的元素定位。通过使用XPath,可以更灵活地定位页面上的元素,尤其是在元素没有唯一的ID或者名称时。 #### 基本语法 XPath的基本语法包括节点选择、属性匹配、文本匹配等。例如,`//tagname[@attribute='value']`用于选择具有特定属性值的标签。 #### 多属性结合定位 当单个属性不足以唯一标识一个元素时,可以通过多个属性组合来提高定位的准确性。例如,在给定的代码片段中,使用了两个属性`id`和`class`来共同定位一个输入框: ```python driver.find_element_by_xpath("//input[@id='sb_form_q' and @class='b_searchbox']").send_keys("bella") ``` 这段代码展示了如何使用`and`逻辑运算符来组合两个属性条件,从而精确找到目标元素[^1]。 #### 模糊定位 有时候,属性值可能包含动态生成的部分,这时可以使用模糊匹配的方法。例如,`starts-with`函数可以用来匹配以特定字符串开头的属性值,而`ends-with`则匹配以特定字符串结尾的属性值: ```python //button[starts-with(@class,"btn")] //input[ends-with(@class,"-special")] ``` 这些表达式可以帮助找到那些属性值具有一定模式的元素[^4]。 #### 轴(Axes) XPath提供了多种轴来帮助导航文档树。例如,`parent::`可以用来选择当前节点的父节点,`preceding-sibling::`可以选择当前节点之前的所有同级节点。下面的例子展示了如何利用轴来定位元素: ```python //span[text()='保存']/parent::button/preceding-sibling::button[1] ``` 这段代码首先找到文本为“保存”的`span`标签,然后找到它的父级`button`,最后找到这个`button`之前的第一个同级`button`[^3]。 #### 文本匹配 除了属性匹配之外,XPath还支持直接根据元素的文本内容来定位。例如,`text()='保存'`可以用来选择文本内容为“保存”的元素。 #### 通配符和节点操作 XPath中的通配符`*`可以用来匹配任何标签名,而`.`表示当前节点。这些特性在处理不确定标签名的情况下非常有用。 通过上述方法,可以有效地使用XPath来进行元素定位,无论是简单的还是复杂的定位需求都可以满足。掌握这些技巧对于进行Web自动化测试或数据抓取工作是非常有帮助的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值