web自动化测试---xpath方式定位页面元素
在实际应用中,如果存在多个相同元素,包括属性相同时,一般会选用这种方式,当然如果定位属性唯一的话,也是可以使用的,不过这种方式没有像id,tag,name等容易理解,下面讲下xpath定位元素的方法
| / | 从根节点选取 |
| // | 从匹配选择的当前节点选择 |
| @ | 选取属性 |
| * | 匹配任何元素节点 |
| @* | 匹配任何属性节点 |
我们就以百度首页右上一排的元素来定位,一般来说通过find_element_by_link来定位,这里我们只介绍xpath来定位的方式
我们查看下原始的百度页面中tag='a',class='mnav'的元素有多少:

总共有6个,下面我们就来定位
1、定位第一个新闻的链接,语句如下:
driver.find_element_by_xpath('//a[@class="mnav"][1]').click()
这里用到的是短xpath,即如果不是从web的根开始查找元素,那么用 // 来表示,如果是根开始那只有一个 / 就可以了
2、定位最后一个学术链接,语句如下:
driver.find_element_by_xpath('//a[@class="mnav"][last()]').click()
#如果显示不是最后一个元素,可以写成如下:
driver.find_element_by_xpath('//a[@class-"mnav"][not last()]')
3、定位倒数第二个贴吧链接,语句如下:
driver.find_element_by_xpath('//a[@class="mnav"][last()-1]').click()
4、如果需要选取前俩个元素,则语句如下:
driver.find_element_by_xpath('//a[@class="mnav"][position()<3]')
5、我们也可以通过下面语句定位学术链接,语句如下:
driver.find_element_by_xpath('//a[@name="tj_trxueshu"]').click()
6、如果需要选取不在一起的俩个元素(比如地图和贴吧),那么可以参考如下语句:
driver.find_element_by_xpath('//a[@name="tj_trmap"]|//a[@name="tj_trtieba"')
7、通过tag也可以也可以选取:
driver.find_element_by_xpath('//*[local-name()="a"]')
#或者通过tag以a开头来获取:
driver.find_element_by_xpath('//*[starts-with(local-name(),"a")]')
#或者通过tag包含a来获取:
driver.find_element_by_xpath('//*[contains(local-name(),"a")]')
#或者通过tag的长度来获取:
dirver.find_element_by_xpath('//*[string-length(local-name())=5]')
8、父兄节点
<div>
<a id="" href="www.baidu.com">我是第1个a标签</a>
<p>我是p标签</p>
<a id="" href="www.baidu.com">我是第2个a标签</a>
<a id="" href="www.baidu.com">我是第3个a标签</a>
<a id="" href="www.baidu.com">我是第4个a标签</a>
<p>我是p标签</p>
<a id="" href="www.baidu.com">我是第5个a标签</a>
</div>
获取第三个a标签的下一个a标签:"//a[@id='3']/following-sibling::a[1]" 获取第三个a标签后面的第N个标签:"//a[@id='3']/following-sibling::*[N]" 获取第三个a标签的上一个a标签:"//a[@id='3']/preceding-sibling::a[1]" 获取第三个a标签的前面的第N个标签:"//a[@id='3']/preceding-sibling::*[N]" 获取第三个a标签的父标签:"//a[@id=='3']/.."
web自动化测试---xpath方式定位页面元素的更多相关文章
- web自动化测试---css方式定位页面元素
css方式定位的方法也有很多,相较于xpath更灵活一点,下面就介绍下使用方法(以百度输入框为例) 1.通过tag来定位,可以写成如下: driver.find_element_by_css_sele ...
- By.Xpath快速定位页面元素常用方法
先看一看xpath的语法 我们将在下面的例子中使用这个 XML 文档. <?xml version="1.0" encoding="ISO-8859-1" ...
- 定位页面元素之xpath详解以及定位不到测试元素的常见问题
一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是 ...
- selenium第三课(selenium八种定位页面元素方法)
selenium webdriver进行元素定位时,通过seleniumAPI官方介绍,获取页面元素的方式一共有以下八种方式,现按照常用→不常用的顺序分别介绍一下. 官方api地址:https://s ...
- selenium webdriver学习(四)------------定位页面元素(转)
selenium webdriver学习(四)------------定位页面元素 博客分类: Selenium-webdriver seleniumwebdriver定位页面元素findElemen ...
- selenium定位页面元素的一件趣事
PS:本博客selenium分类不会记载selenium打开浏览器,定位元素,操作页面元素,切换到iframe,处理alter.confirm和prompt对话框这些在网上随处可见的信息:本博客此分类 ...
- 使用CSS选择器定位页面元素
摘录:http://blog.csdn.net/defectfinder/article/details/51734690 CSS选择器也是一个非常好用的定位元素的方法,甚至比Xpath强大.在自动化 ...
- Selenium 定位页面元素 以及总结页面常见的元素 以及总结用户常见的操作
1. Selenium常见的定位页面元素 2.页面常见的元素 3. 用户常见的操作 1. Selenium常见的定位页面元素 driver.findElement(By.id());driver.fi ...
- Python+Selenium自动化-定位页面元素的八种方法
Python+Selenium自动化-定位页面元素的八种方法 本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...
随机推荐
- 二十、Flyweight 享元模式
原理: 代码清单: BigChar public class BigChar { //字符名称 private char charname; //大型字符 # . \n 组成 private Stri ...
- lambda正则化参数的大小影响
当lambda的值很小时,其惩罚项值不大,还是会出现过拟合现象,当时lambda的值逐渐调大的时候,过拟合现象的程度越来越低,但是当labmda的值超过一个阈值时,就会出现欠拟合现象,因为其惩罚项太大 ...
- Dubbo helloword
首先,开始编写服务提供者的api接口, SampleService 接口 package bhz.dubbo.sample.provider; import java.util.List; publ ...
- java 期末考试复习
//Scanner这样写? Scanner input = new Scanner(System.in); //不断获得下一个单词 names[i] = toTitleCase(input.nex ...
- vue 高阶 provide/inject
1.一般情况使用都是在app.vue配置为: provide () {return {isTest: this}}, 2.所有子组件都可以引用 拿到app.vue里面的所有数据 inject: ['i ...
- CentOS7中firewall防火墙详解和配置,.xml服务配置详解
修改防火墙配置文件之前,需要对之前防火墙做好备份 重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙 1. firewall-cmd --state ...
- 面试01:解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
栈的使用:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间. 队的使用:通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域 ...
- shell脚本语法学习
以下内容仅为个人学习使用,如有错误,欢迎指出 持续更新............... 一.首先创建.sh文件,打开并在文件的第一行输入#!/bin/sh 执行shell文件命令为: . filenam ...
- Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
问题:在文本编辑器中编辑Python文件时添加中文注释,运行python文件时报错.SyntaxError: Non-UTF-8 code starting with '\xc1' 解决方法:在文本开 ...
- selenium实现淘宝的商品爬取
一.问题 本次利用selenium自动化测试,完成对淘宝的爬取,这样可以避免一些反爬的措施,也是一种爬虫常用的手段.本次实战的难点: 1.如何利用selenium绕过淘宝的登录界面 2.获取淘宝的页面 ...