使用Xpath轴方式可依据在文档数中的元素的相对位置来进行定位,先找到一个相对好定位的元素,在根据与它相对位置来定位其他元素,可以解决一些元素难以定位的问题。今天学习了,写下笔记加深下印象

如家HTML页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在此处插入标题</title>
</head>
<body>
<div id="div1">
<input alt="div1-input1" id="iv1-input1" value="" /> <a
href="http://www.baidu.com">test</a> <img alt="div1-img1" src="">
<input type="button" id="div1-button1" name="div1-button" />
</div>
<div id="div2">
<input alt="div2-input2" id="div2-input2" value="" /> <a
href="http://www.sogou.com">test</a> <img alt="div2-img2" src="">
</div> </body>
</html>

 画出树状图如下所示:

 

Xpath轴关键字 轴的定义说明 定位表达式实例 表达式解释
parent 选取当前节点的父节点 //img[@alt='div2-img2']/parent::div 查找到alt属性为div2-img2的img元素,并基于图片找到其上一级的div元素
child 选取当前节点的子节点 //div[@id='div1']/child::img 查找id为div1的div标签,基于当前div查找标签为img的子节点
ancestor 选取当前节点的所有上层节点 //img[@alt='div2-img2']/ancestor::div 查找alt属性为div2-img2的图片,基于当前图片找到其上级的div页面元素
descendant 选取当前节点所有下层节点 //div[@id='div2']/descendant::img 查找id属性为div2的div元素,在查找其下级所有节点中的img元素
following 选取当前节点之后显示的所有节点 //div[@id='div1']/following::img 查找到ID属性为div1的div元素,并基于div的位置找到它后面节点中的img元素
following-sibling 选取当前节点所有的平级节点 //img[@alt='div1-img1']/following-sibling::input 查找到alt属性为div1-img1的img页面元素,并基于img的位置找到后续节点中的input元素
preceding 选取当前节点前面所有的节点 //img[@alt='div2-img2']/preceding::div 查找到alt属性为div2-img2的图片页面元素,并基于图片的位置找到它前面节点中的div元素
preceding-sibling 选取当前节点前面所有平级的节点 //img[@alt='div2-img2']/preceding-sibling::a[1] 查找到alt属性值为div2-img2的图片元素,基于图片位置找到它前面同级节点的第二个链接页面元素

下面是例子:

使用xpath的轴(Axis)进行元素定位的更多相关文章

  1. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  2. 使用Xpath定位元素(和元素定位相关的Xpath语法)

    本文主要讲述Xpath语法中,和元素定位相关的语法 第一种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input" ...

  3. 大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#

    关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options drive ...

  4. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  5. selenium之元素定位-xpath

    被测试网页的HTML代码 <html> <body> <div id="div1" style="text-align:center&quo ...

  6. xpath元素定位方法

    XPath 使用路径表达式来选取 XML 文档中的节点或者节点集.这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似.XPath 含有超过 100 个内建的函数.这些函数用于字符串值.数值 ...

  7. UI自动化,通过Xpath结合父类、同级元素,查找到唯一的元素定位

    UI自动化,通过Xpath定位的总结 当页面展示的内容的html布局格式一样,只能第几个控件的绝对定位来区分时,如果后面有变更控件的顺序,就会导致找不到这个元素,维护成本较高,可以尝试用其他的方式,比 ...

  8. 超全selenium元素定位XPath、CSS

    说明:在HTML页面中,<p> 是一个标签,<p>hello</p> 是一个元素,元素由一个开始的标签和结束的标签组成.<font color="r ...

  9. Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例

    此文主要对 Selenium2 的 Web 元素定位及 XPath 编写示例,敬请各位亲们参阅,共同探讨.若有不足之处,敬请各位大神指正,不胜感激! 通过 Firefox(火狐)浏览器的插件 Fire ...

随机推荐

  1. Codeforces Round #175 (Div. 2)

    A. Slightly Decreasing Permutations 后\(k\)个倒序放前面,前\(n-k\)个顺序放后面. B. Find Marble 模拟. C. Building Perm ...

  2. 模板方法模式(Template Method)

    一.引言 提到模板,大家肯定不免想到生活中的“简历模板”.“论文模板”.“Word中模版文件”等,在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它,例如简 ...

  3. CE 操作串口

    WinCE里面都是通过标准的系统API对串口进行操作的,但是串口不同于其它文件,它是是独占式地操作的. 下面是一个操作的串口类: #pragma once typedef void (*LPDataA ...

  4. Python 定位字符串

    一位朋友在玩闯关游戏时遇到如下问题: 感觉考查的就是字符串操作,用string模块就可完成:代码如下: # -*- coding: utf-8 -*- __author__ = 'Evilxr' im ...

  5. SQL-server的事务,视图和索引

    (1):  A: B: C: D: 选错误A,D 因为bc不对所以选AD,A:关系数据库中,数据是保存在数据页中的,而索引则是存储在索引页中.因此,数据表中的索引并非越多越好,一个表中如果有大量的索引 ...

  6. 不能从const char *转换为LPCWSTR

    编译器有时候会根据编码方式来选择定义为LPCWSTR还是LPCTSTR LPSTR: 32bit指针 指向一个字符串,每个字符占1字节. 相当于 char *   LPCSTR: 32-bit指针 指 ...

  7. InfoPi运行机制介绍

    整体工作框架 文件目录结构 数据库设计 程序开发框架 注:图片可能被自动缩小,可以另存看大图 1.整体工作框架. 通用户关注绿色竖线左侧的内容即可 2.InfoPi的文件目录结构. 请留意一下cfg目 ...

  8. C-随笔

    C语言的设计哲学之一: 程序员知道自己在干什么-没有安全带! 值的类型并不是值的内在本质, 而是取决于它被使用的方式 1.#include <stdio.h>在预处理器处理的时候把stdi ...

  9. Sql server 2008 R2 实现远程异地备份

    1. 环境: a)两台同样的Sql Server 2008 R2 服务器 b)操作系统都是windows 2008 c)需要将102.108.0.1数据库MSGC远程备份到112.118.0.2的服务 ...

  10. mysql强更改root密码

    在丢失root密码的时候,可以这样 要先停掉 mysql服务 mysqld_safe --skip-grant-tables& mysql -u root mysql mysql> UP ...