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 Global Round 9 C. Element Extermination

    题目链接:https://codeforces.com/contest/1375/problem/C 题意 给出一个大小为 $n$ 的排列 $a$,如果 $a_i < a_{i+1}$,则可以选 ...

  2. gym100923C. Por Costel and Bujor (高斯消元)

    题意:简化一下 就是解N个 系数矩阵一样 等式右边列矩阵不一样的方程组 题解:系数矩阵一样 为什么我却毫无办法???? 其实只要把等式右边的矩阵都排在后面就好了啊 就变成解一个N x 2N的方程组了 ...

  3. B. Modular Equations

    Last week, Hamed learned about a new type of equations in his math class called Modular Equations. L ...

  4. HDU 3488-Tour KM

    为什么可以这样拆点在 这道题 都已经证明过 代码: 1 //题目上面说了"The only exception is that the first and the last city sho ...

  5. Python 遭遇 ProxyError 问题记录

    最近遇到的一个问题,在搞清楚之后才发现这么多年的 HTTPS_PROXY 都配置错了! 起因 想用 Python 在网上下载一些图片素材,结果 requests 报错 requests.excepti ...

  6. 【转】Redis数据备份和重启恢复

    一.对Redis持久化的探讨与理解 目前Redis持久化的方式有两种: RDB 和 AOF 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复.Redis是一个内存数据库,无论是RDB ...

  7. 或许你知道Python的shell,那jshell呢?

    Java 10以后,java官方推出了类似python的shell操作的jshell,你的指令可以及时反馈,对于新手学习而言非常有用.如果你和我一样刚学Java,建议你使用高版本,和我一起开始使用js ...

  8. python程序配置守护进程

    参考博客 python Supervisor 使用与配置_a35155的博客-CSDN博客 Ubuntu系统下:apt-get install supervisor,通过这种方式安装后,自动设置为开机 ...

  9. docker的FAQ

    1.Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 .如何将一台宿主机的docker环境迁移到另外一台宿主机? 答:停止Docker服务,将整个docker存储 ...

  10. 桶排序 && leetcode 41

    桶排序 对于0-1000 ,用1001个桶  简单版 或者用10个桶0-9,先按各位装桶,然后依(桶)次放回,然后再按十位放桶,放回,然后百位. 也就是基数排序 https://www.cnblogs ...