Xpath定位

本文介绍了XPath的基本概念及其在Web自动化测试中的应用。包括XPath的各种定位方法如绝对路径、相对路径、索引号、属性和模糊匹配等,并给出了具体的示例。

xpath 的定位方法, 非常强大。  使用这种方法几乎可以定位到页面上的任意元素。

 

阅读目录

  1. 什么是xpath
  2. xpath定位的缺点
  3. testXpath.html 代码如下
  4. 绝对路径定位方式
  5. 使用浏览器调试工具,可以直接获取xpath语句
  6. 绝对路径的缺点
  7. 绝对路径和相对路径的区别
  8. 相对路径定位方式
  9. 使用索引号定位
  10. 使用页面属性定位
  11. 模糊定位starts-with关键字
  12. 模糊定位contains关键字
  13. text() 函数 文本定位

 

什么是xpath

xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。

 

xpath定位的缺点

xpath 这种定位方式, webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素, 这是个非常费时的操作,  如果脚本中大量使用xpath做元素定位的话, 脚本的执行速度可能会稍慢

 

testXpath.html 代码如下

复制代码

<html>
<head><title>Test Xpath</title></head>
<body>
    <div id="div1">
        <input name="div1input"></input>
        <a href="http://www.sogou.com">搜狗搜索</a>
        <img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img>
        <input type="button" value="查询"></input>
    </div>
    <br />
    <div name="div2">
        <input name="div2iniput" /></input>
        <a href="http://www.baidu.com">百度搜索</a>
        <img alt="div2-img2" src="http://www.baidu.comn/img/bdlogo.png" href="http:/www.baidu.com">百度图片</img>
    </div>
</body>
</html>

复制代码

 

绝对路径定位方式

在被测试网页中, 查找第一个div标签中的按钮

XPath的表达式

/html/body/div/input[@value="查询"]
WebElement button = driver.findElement(By.xpath("/html/body/div/input[@value='查询']"));

 

使用浏览器调试工具,可以直接获取xpath语句

 

绝对路径的缺点

1. 一旦页面结构发生改变,改路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法

 

绝对路径和相对路径的区别

 

绝对路径  以 "/"  开头, 让xpath 从文档的根节点开始解析

相对路径  以"//" 开头, 让xpath 从文档的任何元素节点开始解析

 

 

相对路径定位方式

在被测试网页中,查找第一个div标签中的按钮

XPath的表达式

//input[@value="查询"]
WebElement button = driver.findElement(By.xpath("//input[@value='查询']"));

 

使用索引号定位

在被测试网页中, 查找第二个div标签中的"查询"按钮

//input[2] 
WebElement button = driver.findElement(By.xpath("//input[2]"));

 

使用页面属性定位

定位被测试页面中的第一个图片元素

//img[@alt='div1-img1']
WebElement button = driver.findElement(By.xpath("//img[@alt='div1-img1']"));
 

 

模糊定位starts-with关键字

查找图片alt属性开始位置包含'div1'关键字的元素

//imag[starts-with(@alt,'div')]

 

模糊定位contains关键字

查找图片alt属性包含'g1'关键字的元素

//imag[contains(@alt,'g1')]

 

 

text() 函数 文本定位

 

查找所有文本为"百度搜索" 的元素

driver.findElement(By.xpath("//*[text()='百度搜索']"));

 

查找所有文本为“搜索” 的超链接 

driver.findElement(By.xpath("//a[contains(text(),'搜索')]"));

转载于:https://my.oschina.net/u/2245485/blog/780485

### 使用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自动化测试或数据抓取工作是非常有帮助的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值