selenium自动化测试:xpath八种定位方式!

01、前言

如果可以的话,请先关注(专栏和账号),然后点赞和收藏,最后学习和进步。你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负众望。谢谢!!!

1.前提

基于win10专业版64位系统+64位jdk1.8+64位python3.6.5+社区版pycharm2018.1.3+unittest+selenium3.141.0。

2.xpath八种定位方式

xpath:即xml路径语言,通常用来在html或xml中查找元素。

掌握了xpath八种定位方式能干啥?既不能上天也不能遁地,但能解决你在selenium自动化测试定位元素时百分之99.999999999......的元素都可以定位得到。

下来看下xpath的基本语法:

# /:从根节点选取
# //:从非根节点选取
# *:任意节点选取
# @:根据属性
# text():根据链接文本
# and:关联属性或链接文本
# []:可以放置下标、属性和链接文本
# .:选取当前节点
# ..:选取当前节点的父节点
# contains:包含,用于模糊匹配

说明:xpath涉及到的东西还有很多,这里仅教会大家做自动化测试时,会灵活书写xpath定位语句即可。

1)全路径:不推荐

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("/html/body/div/div/div[2]/a[3]").click()#全路径定位,不推荐
sleep(1)
dr.close()

2)单属性

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//a[@name='tj_trhao123']").click()#单属性定位
sleep(1)
dr.close()

3)多属性

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//a[@name='tj_trhao123' and @class='mnav']").click()#多属性定位
sleep(1)
dr.close()
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

4)父属性

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//div[@id='u1']/a[@name='tj_trhao123']").click()#父属性定位
sleep(1)
dr.close()

5)下标

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//a[@class='mnav'][2]").click()#下标定位
sleep(1)
dr.close()

6).和..

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//a[@class='mnav'][2]/.").click()#.和..定位
sleep(1)
dr.close()

7)链接文本

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
dr.find_element_by_xpath("//a[text()='hao123']").click()#链接文本定位
sleep(1)
dr.close()

8)模糊匹配

from time import sleep
from selenium import webdriver
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
# dr.find_element_by_xpath("//a[contains(@name,'hao')]").click()#模糊匹配定位
dr.find_element_by_xpath("//a[contains(text(),'hao')]").click()#模糊匹配定位
sleep(1)
dr.close()

注:xpath八种定位方式,除了第一种全路径定位方式不推荐外,其它几种定位方式,你觉得哪个方便就用哪个好了。

END点赞关注不迷路!今天的分享就到此结束了~!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【springboot】整合redis和定制化

1.前提条件:docker安装好了redis,确定redis可以访问 可选软件: 2.测试代码 (1)redis依赖 org.springframework.boot spring-boot-starter-data-redis (2)配置redis (3) 注入 Resource StringRedisTemplate stringRedisTemplate; 这里如果用Autowi…

docker安装及简单使用(Linux版本)

文章目录 前言一、docker安装二、docker命令pull(安装镜像)images(查看镜像)run(创建容器)删除容器exec(进入运行中的容器)常用命令 总结如有启发,可点赞收藏哟~ 前言 ht…

Python 进阶(十三):JSON 序列化和反序列化(json 模块)

大家好,我是水滴~~ 本篇文章主要介绍json模块的功能,包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象,将JSON字符串反序列化为Python对象、反序列化时类型的对照表…

2023中医药国际传承传播大会在深圳召开

12月2日,2023中医药国际传承传播大会在深圳召开,大会由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会主办,世界针灸学会联合会健康传播工作委员会、中新雅视文化发展有限公司公司与深圳巨邦传媒集…

播放pcap抓包文件中的amr-wb、amr-nb、evs声音

前言 由于wireshark并不能解析amr-wb、evs数据,所以也就没办法播放响应的音频。在遇到问题时,想还原抓包的数据是否正常就很难受。为了解决这个问题,我看了RFC4867,想着自己写一个解包小工具,最后彻底放弃。。感觉太复…

Qt Creator :Analyze heob 使用教程

功能:在windows系统上检测和调试软件代码的内存泄漏情况; 使用环境 :需要下载 heob和dwarfstack 把dwarfstack动态库放在heob的执行程序目录下 使用步骤: 第三步:配置启动调试程序 第四步:配置heob的路…

什么因素会影响葡萄酒陈酿的能力?

糖、酸和酚类与水的比例是葡萄酒陈酿程度的关键决定因素,收获前葡萄中的水分越少,产生的葡萄酒就越有可能具有一定的陈酿潜力。那么葡萄品种、气候和葡萄栽培实践的过程就相当重要了,对陈酿的时间发挥了重要的作用。皮较厚的葡萄品种&#xf…

C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字!!! 不是下面:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非…

Python自动化测试之破解图文验证码

对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码, 验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑…

软考人数已超500万!请重视!

2020年40万,2021年94万,2022年129万,2023年软考报考人数已超500万!2年时间直翻10倍!如此火爆原因是什么? 不是打广告!不是打广告!不是打广告 千万不要上了”黑心培训结构“当&#x…

App的回归测试,有什么高效的测试方法?

直接抛出观点:高效的测试方法当然有,那就是采用【接口自动化】。 一、回归测试,测哪些东西 回归测试是软件测试过程中的一个重要的环节,如果说冒烟测试是对软件质量的抽检,那么回归测试就是保证软件质量的最后一道屏障…

集合01 - Java

集合 1、数组的不足2、集合3、集合的框架体系(背)CollectionMap 1、数组的不足 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下。 数组: 长度开始时必须指定,而且一旦指定,不能更改…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

C/C++,优化算法——使用遗传算法的旅行商问题(traveling-salesman-problem)的源程序

1 文本格式 #include <bits/stdc.h> #include <limits.h> using namespace std; // Number of cities in TSP #define V 5 // Names of the cities #define GENES ABCDE // Starting Node Value #define START 0 // Initial population size for the algorith…

【算法题】一种字符串压缩表示的解压(js)

输入&#xff1a;2dff 输出 !error 两个d不需要压缩&#xff0c;故输入不合法 输入:4eA 输出:!error 全部由小写英文字母组成&#xff0c;压缩后不会出现&#xff0c;故输出不合法 function solution(str) {const error "!error";// 只能包含小写字母和数字 [^a-z0…

详解线段树

前段时间写过一篇关于树状数组的博客树状数组&#xff0c;今天我们要介绍的是线段树&#xff0c;线段树比树状数组中的应用场景更加的广泛。这些问题也是在leetcode 11月的每日一题频繁遇到的问题&#xff0c;实际上线段树就和红黑树 、堆一样是一类模板&#xff0c;但是标准库…

【荣誉】科东软件荣获广州市软件行业协会双料大奖!

软件产业在数字经济中扮演着基础支撑的角色&#xff0c;对于优化产业结构、提高自主可控、赋能整体经济高质量发展具有关键作用。 近日&#xff0c;广州市软件行业第七届会员大会第三次会议成功召开&#xff01;此次会议旨在回顾过去一年的行业发展&#xff0c;展望未来的趋势和…

nginx编译安装及配置文件的修改

编译安装nginx 1.关闭防火墙&#xff0c;安全机制&#xff0c;去官网下载nginx压缩包&#xff0c;并进行解压 systemctl stop firewalld #关闭防火墙 systemctl disable --now firewalld #开机不自启并立即关闭防火墙 setenforce 0 #关闭安全机制 2.安装依赖包&#xff0…

CSU计算机学院2023秋C语言期中题目思路分享(前三道题)

文章目录 写在前面A&#xff1a;个税计算——阅读理解与数据类型转换原题输入输出样例输入样例输出 题目分析题目理解代码实现与问题解决 我的代码 B&#xff1a;时制转换——问题是一点点解决的原题输入输出样例输入样例输出 题目分析我的代码 C&#xff1a;统计进位——人教版…

编程语言分类

如果要将编程语言分成两大类&#xff0c;可以考虑以下分类方式&#xff1a; 编译型语言&#xff08;Compiled Languages&#xff09;&#xff1a;这类语言在运行之前需要通过编译器将源代码转换为机器码或类似形式的可执行代码。编译型语言的特点包括&#xff1a; 需要显式的编…