`

XPATH定位

 
阅读更多
XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对元素和属性进行遍历,主流的浏览器都支持XPATH,因为HTML页面在DOM中表示为XHTML文档。
XPATH语言是基于XML文档的树结构,并提供了浏览树的能力,通过多样的标准来选择节点。
Selenium WebDriver支持使用XPATH表达式来定位元素。
XPATH和CSS选择器最重要的区别是XPATH可以向前和向后查询DOM结构的元素,而CSS选择器只能向前查询,这意味着XPATH可以通过子元素来定位父元素!

使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点):
a、通过绝对路径定位元素(不推荐!)
WebElement ele = driver.findElement(By.xpath("html/body/div/form/input"));

b、通过相对路径定位元素
WebElement ele = driver.findElement(By.xpath("//input"));

c、使用索引定位元素
WebElement ele = driver.findElement(By.xpath("(//input)[4]"));

d、使用XPATH及属性值定位元素
WebElement ele = driver.findElement(By.xpath("//input[@id='love']"));
//其他方法(看字面意思应该能理解吧)
WebElement ele = driver.findElement(By.xpath("//input[@type='submit'][@name='love']"));
WebElement ele = driver.findElement(By.xpath("//input[@type='submit' and @name='love']"));
WebElement ele = driver.findElement(By.xpath("//input[@type='submit' or @name='love']"));

e、使用XPATH及属性名称定位元素
//查找所有input标签中含有type属性的元素
WebElement ele = driver.findElement(By.xpath("//input[@type]"));

f、部分属性值匹配(和CSS选择器类似)
WebElement ele = driver.findElement(By.xpath("//input[start-with(@id,'love')]"));//匹配id以love开头的元素,id='loveyou'
WebElement ele = driver.findElement(By.xpath("//input[ends-with(@id,'love')]"));//匹配id以love结尾的元素,id='youlove'
WebElement ele = driver.findElement(By.xpath("//input[contains(@id,'love')]"));//匹配id中含有love的元素,id='youloveyou'

g、使用任意值来匹配属性及元素
WebElement ele = driver.findElement(By.xpath("//input[@*='love']"));//匹配所有input元素中含有属性的值为love的元素

h、使用XPATH轴来定位元素
//XPATH轴没有实际经验,所以本文不讨论它。


元素定位总结

//注:本专题只介绍java版
//By id
WebElement ele = driver.findElement(By.id(<element id>));
//By Name
WebElement ele = driver.findElement(By.id(<element name>));
//By className
WebElement ele = driver.findElement(By.className(<element ClassName>));
//By tabName
WebElement ele = driver.findElement(By.tagName(<html tagName>));
//By linkText
WebElement ele = driver.findElement(By.linkText(<link text>));
//By partialLinkText
WebElement ele = driver.findElement(By.partialLinkText(<link text>));//通过部分文本定位连接
//By cssSelector
WebElement ele = driver.findElement(By.cssSelector(<css>));
//By XPATH
WebElement ele = driver.findElement(By.xpath(<element xpath>));

武功秘籍 - XPATH的contains()方法定位含有class属性的元素
此方法在查找一些元素特征明显的元素时显得很鸡肋,但是,在某些情况下却非要用这个方法才能定位到我们需要的元素(其中的class值我们不一定要写全),这个方法使用很简单:
WebElement ele = driver.findElement(By.xpath("//某标签[contains(concat(' ', @class, ' '), ' 这里写class的值,可以写全名也可以不写全,它能找到')] "));

这个方法在网上一般的教程中很少出现,这里简单介绍一下它的使用方法,我们一开源中国首页为例:
开源中国首页右上角有一个搜索按钮,我们尝试使用XPATH的contains()方法来定位它
oschina
程序清单:
/*
 * 示例脚本
 * 脚本功能:掌握XPATH的contains()方法定位元素
 */
package com.test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
 
public class test {
	public static void main(String args[]) throws Exception {
 
		WebDriver driver = new HtmlUnitDriver();
 
		driver.get("http://www.oschina.net/");
 
		WebElement btn = driver.findElement(By.xpath("//button[contains(concat(' ', @class, ' '), ' BTN ')] "));
		System.out.println(btn);
 
		driver.quit();
	}
}

打印结果如下:
button type="submit" class="BTN"
分享到:
评论

相关推荐

    页面元素xpath定位工具.rar

    本压缩包"页面元素xpath定位工具.rar"提供了一个名为DragonTestingXpathHelperV1.0.2的工具,该工具专门用于帮助用户快速、准确地找到网页上的可点击元素和输入字段,并自动生成对应的XPath表达式。 在网页自动化...

    Selenium_XPath定位详解

    以下是一些基本的XPath定位方法: 1. **基于标签名**:通过元素的标签名定位,如`//button`会找到所有的按钮元素。 2. **基于ID**:使用`[@id='element_id']`来定位具有特定ID的元素,例如`//input[@id='username'...

    xpath定位,xpath定位,xpath定位

    Selenium xpath,

    ChroPath 非常给力的Xpath定位查看插件

    **XPath定位的重要性** XPath是一种在XML文档中查找信息的语言,同样适用于HTML文档。在自动化测试,特别是使用Selenium进行网页自动化时,XPath是常用的元素定位方法。通过XPath,我们可以精确地找到页面上任何...

    Selenium WebDriver中使用By.Xpath快速定位页面元素

    Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...

    Ranorex Selocity1.4.3(web元素定位插件)

    在Ranorex Selocity中,XPath定位提供了强大的功能,能够处理复杂的网页结构。例如,`//div[@id='container']/p` 将选取ID为`container`的`div`下的所有`p`元素。 **RxPath**: Ranorex特有的RxPath是扩展了XPath的...

    Xpath 工具

    例如,在自动化测试中,测试脚本可能会利用XPath定位网页元素,确保正确地交互。其次,XPath工具是XML数据处理和分析的得力助手,特别是在需要从大型XML文件中提取特定信息时。此外,它们在XML Schema验证、XSLT转换...

    robula-plus:用于生成健壮的XPath定位器以进行Web测试的算法

    用法该代码主要包含以下三种方法:getRobustXPath(元素,文档): 返回优化的健壮XPath定位符字符串,描述所需的元素。 范围类型描述元素元素所需的元素。 文档文档要分析的文档,其中包含所需的元素。...

    firepath火狐xpath定位

    firepath 火狐快速定位xpath的利器

    Xpath生成器,自动生成XPATH,C#版

    4. **相对路径**:生成相对于当前节点的XPath,用于在上下文中定位节点。 5. **函数应用**:XPath内置了一些函数,如 `text()` 用于获取元素的文本内容,`count()` 计算节点个数等,生成器可能能帮助用户创建这些...

    Chrome控制台妙用之定位xpath_js_css居家必备好工具

    本文将重点介绍Chrome控制台中的一个实用技巧——利用`$x`命令来定位和操作XPath、JavaScript以及CSS。 XPath是一种在XML文档中查找信息的语言,它可以帮助我们精确地选取HTML或XML文档中的元素。`$x`是Chrome...

    用xpath精确定位节点元素

    ### 使用XPath精确定位节点元素 #### XPath简介与重要性 XPath是一种用于在XML文档中查找信息的语言。它被设计用来在XML文档中导航,帮助开发者精确地定位和选取节点。XPath在XSLT(Extensible Stylesheet ...

    爬虫的Xpath定位神器,非常的简单方便

    总结来说,XPath是网络爬虫领域中用于HTML和XML文档数据定位的利器,它通过简洁的路径表达式和强大的函数库,使我们能快速、准确地从海量网页数据中提取所需信息。对于任何想要从事网络爬虫开发的人来说,熟练掌握...

    python selenium xpath定位操作

    XPath 是一种在 XML 文档中查找信息的语言,对于 Selenium 来说,XPath 是一种常用的定位网页元素的方法。下面将详细介绍如何使用 Python Selenium 结合 XPath 进行元素定位。 1. **绝对定位**: 绝对定位是最直接...

    java selenium XPath 定位实现方法

    当Selenium WebDriver使用XPath定位元素时,它会遍历页面上的所有元素,这可能导致脚本执行速度变慢。如果脚本中大量使用XPath,性能影响会更加明显。此外,如果页面结构发生变化,基于绝对路径的XPath表达式可能...

    对Xpath 获取子标签下所有文本的方法详解

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被广泛应用于Web抓取,特别是Python的Scrapy框架中,用于选取XML或HTML文档中的节点。本文将深入探讨如何使用XPath来获取子标签下的所有文本内容...

    RPA Selenium 定位Xpath 工具

    在Selenium中,XPath定位器用于找到页面上的特定元素,这对于编写测试脚本至关重要。XPath表达式可以根据元素的名称、属性、位置等多种条件进行精确或模糊匹配。 Fire-IEBrowser1.4是一款基于Internet Explorer的...

    IE浏览器Xpath工具.zip

    在Java中使用XPath定位元素,你需要导入`org.openqa.selenium.By`包,并使用`By.xpath()`方法: ```java WebElement element = driver.findElement(By.xpath("//input[@id='username']")); ``` 在Python中,...

    python神奇xpath

    - **寻找独立节点**:如果只需要文档中的某一部分,可以直接通过XPath定位到该节点。 #### Chrome生成法 对于复杂的HTML文档,手动编写XPath路径可能较为困难。这时可以使用Chrome浏览器的开发者工具来辅助生成...

Global site tag (gtag.js) - Google Analytics