XPath定位是XML Path的缩写,称为XML路径语言,是在XML文档中查找信息的一种语言,可用来再XML文档中对元素和属性进行搜索。XPath使用路径表达式来选取XML文档中的节点或节点集。

XPath路径表达式如:html/body/div/input

WebDriver提供Xpath定位方式,对应的方法:

driver.find_element_by_xpath("xpath表达式")

XPath路径表达式分类:绝对路径定位元素、相对路径定位元素

一、

绝对路径XPath表达式:以斜线"/"开始,从HTML代码的最外层节点标记html开始,逐级描述节点的位置路径,查找的时候从根节点html开始,按照指定的路径逐级查找,直到找到想要的节点元素。

选择根元素html:/html

选择文本域textarea:/html/body/form/textarea

选择form下的所有input:html/form/input

说明:使用绝对路径查找以"/"开头,路径之间使用"/"进行分隔,为了精准定位,往往需要附加一些属性信息说明

1、属性说明使用方括号[ ]括起来

2、属性名称前使用@符号前缀

3、属性说明格式:节点名称[@属性名='属性值']

如:/html/body/form/input[@value='姓名']

决定路径的优缺点:

效率高,但是表达式较长,可维护性不好。不推荐采用绝对定位方式,因为一旦页面发生变化,原有定位的XPath表达式就会失败

二、

相对路径XPath表达式以双斜线"//"开始,表示再HTML文档中的全部层级位置进行查找所要的定位元素

如:选择所有的meta://meta

选择form下的所有textarea://form/textarea

选择body下的input://body/input

说明:使用相对路径查找以"//"开头,表示在HTML文档中的全部层级位置进行查找所有满足双斜线"//"之后规则的元素(无论层级关系)

相对路径定位元素的优缺点:表达式简洁,可维护性,但是效率低。推荐使用相对路径的XPath表达式,可以大大降低测试脚本中定位表达式的维护成本。

如://input[@di="password"]

三、

XPath的谓词:即筛选表达式,也就是附加筛选的条件,式定位元素更加精准。所有的条件,都写在方括号[ ]中,表示对前面的节点进一步的筛选说明

如://input[@id="pswd"]

常用方法:
1、使用页面元素的属性值

2、使用页面元素的索引号

3、使用页面元素存在某属性

4、使用页面元素存在某子节点

5、使用页面元素的子节点值

四、

Xpath多条件查找页面元素

如果通过一个属性信息不能准确定位到元素,可以通过多个属性信息进行定位

语法:

//节点名称[@属性名1="属性值1"][@属性名2="属性值2"]

//节点名称[@属性名1="属性值1" and @属性名2="属性值2"]

五、XPath定位元素通配符

1、"*"表示匹配任何节点元素

//*[@id="username"]查找任何id属性值等于username的元素节点

//select[@name]/* 查找存在name属性的select节点的所有子节点

2、"@*"表示匹配任何属性

//input[@*=""password]查找任何属性值等于password的input元素节点

//select[@*]查找所有带有属性的select元素节点

//*[@*="汽车"]查找任何属性等于“汽车”的所有元素节点

selenium之元素定位的方法(二)的更多相关文章

  1. selenium之元素定位的方法(一)

    WebDriver 对象有多种方法用于在页面中寻找元素.他们被分成find_element_*和find_elements_*方法.find_element_*方法返回一个WebElement对象,代 ...

  2. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  3. Selenium Web元素定位方法

    Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...

  4. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

  5. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

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

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

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

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

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

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

  9. java selenium (五) 元素定位大全

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 ...

随机推荐

  1. Codeforces Round #636 (Div. 3)

    比赛链接:https://codeforces.com/contest/1343 A - Candies 题意 有一数列 x + 2x + 4x + ... + 2k-1x = n,输出 k ≥ 2 ...

  2. hdu4348 To the moon (主席树 || 离线线段树)

    Problem Description Background To The Moon is a independent game released in November 2011, it is a ...

  3. 关于贪心算法的经典问题(算法效率 or 动态规划)

    如题,贪心算法隶属于提高算法效率的方法,也常与动态规划的思路相挂钩或一同出现.下面介绍几个经典贪心问题.(参考自刘汝佳著<算法竞赛入门经典>).P.S.下文皆是我一个字一个字敲出来的,绝对 ...

  4. poj2926Requirements (曼哈顿距离)

    Description An undergraduate student, realizing that he needs to do research to improve his chances ...

  5. Codeforces Round #686 (Div. 3) E. Number of Simple Paths (思维,图,bfs)

    题意:有一个\(n\)个点,\(n\)条边的图,问你长度至少为\(1\)的简单路径有多少条. 题解:根据树的性质,我们知道这颗树一定存在一个环,假如一棵树没有环,那么它的所有长度不小于\(1\)的简单 ...

  6. AtCoder Beginner Contest 177 E - Coprime (数学)

    题意:给你\(n\)个数,首先判断它们是否全都__两两互质__.然后再判断它们是否全都互质. 题解:判断所有数互质很简单,直接枚举跑个gcd就行,关键是第一个条件我们要怎么去判断,其实我们可以对所有数 ...

  7. 为什么['1', '7', '11'].map(parseInt) returns [1, NaN, 3]?

    前言 早上收到Medium的邮件推送,看到这样一篇文章:Why ['1', '7', '11'].map(parseInt) returns [1, NaN, 3] in Javascript 看定义 ...

  8. OpenStack Train版-11.安装horizon服务(计算节点)

    OpenStack仪表板Dashboard服务的项目名称是Horizon,它所需的唯一服务是身份服务keystone,开发语言是python的web框架Django. 安装Train版本的Horizo ...

  9. WSL (Windows Subsystem for Linux) 的 VSLAM (Visual Simultaneous Localization and Mapping) 道路

    WSL 的 VSLAM 道路 以 Windows Subsystem for Linux 闯入 Visual Simultaneous Localization and Mapping 世界的艰难道路 ...

  10. codeforces 11B Jumping Jack

    Jack is working on his jumping skills recently. Currently he's located at point zero of the number l ...