xpath其实就是一个path(路径),一个描述页面元素位置信息的路径,相当于元素的坐标xpath基于XML文档树状结构,是XML路径语言,用来查询xml文档中的节点。
- 绝对定位
-
- 从根开始找--/(根目录)
- /html/body/div[2]/div/form/div[5]/button
- 缺点:一旦页面结构发生变化(比如重新设计时,路径少了两节),该路径也随之失效,必须重新写
- xpath相对路径
- 只要不是/开始的,就是相对路径
- //*[@name='phone']
- 路径解释:
-
- //匹配指定节点,不考虑它们位置(/则表示绝对路径,从根下开始)
- *通配符,匹配任意元素节点。
- @ 选取属性
- []属性判断条件表达式
- 相对定位优点:
-
- 灵活,方便,耦合性低
//通过元素的属性定位 这会定位到所有<input>标签中name属性为username的第一个元素。
driver.findElement(By.xpath("//input[@name='username']"));
//多属性定位 这将定位到所有name属性为user且class属性为login的<input>元素的第一个
driver.findElement(By.xpath("//input[@name='user' and @class='login']"));
//多属性定位 这将定位到所有name属性为user或class属性为login的<input>元素的第一个
driver.findElement(By.xpath("//input[@name='user' or @class='login']"));
//通过元素的文本内容定位 这会定位到所有<a>标签中文本内容为Login的第一个元素。
driver.findElement(By.xpath("//a[text()='Login']"));
//部分文本定位 这将定位到所有文本中包含“Login”的<a>标签的第一个元素。
driver.findElement(By.xpath("//a[contains(text(), 'Login')]"));
//通过元素的位置定位:这会定位到页面上第二个<div>元素。
driver.findElement(By.xpath("//div/a[@href='#']"));