0.前言

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

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()

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八种定位方式,除了第一种全路径定位方式不推荐外,其它几种定位方式,你觉得哪个方便就用哪个好了。

python自动化测试xpath_selenium自动化测试:5.xpath八种定位方式相关推荐

  1. Selenium八种定位方式

    八种定位方式分别是:id.name.class name.tag name .link text.partial link textxpath.css selector. 元素标签或者元素属性:id. ...

  2. 【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

    STM32F1xx官方资料: <STM32中文参考手册V10>-第8章通用和复用功能IO(GPIO和AFIO ) 芯片数据手册(datasheet) STM32的GPIO介绍 STM32引 ...

  3. 分享一下目前市场上常用的八种推广方式,希望对你有帮助。

    游戏推广的核心本质是什么?就是新增玩家,我来给大家分享一下目前市场上常用的八种推广方式,希望对你有帮助. 一呢,做工会,作为一个工会的老大来说呢,它是有领导效应,而且公会都有公会群,将来号召大家一起换 ...

  4. 自动化的8种定位方式

    自动化的8种定位方式 1.id属性 2.name属性 3.class属性 4.标签名 5 6 .链接元素 link_text #完全匹配 #模糊匹配 7 8. xpath =ZZ 易懂 css = 难 ...

  5. android中几种定位方式详解

    目录 前言: 1.GPS定位 2.NETWORK定位 3.AGPS定位 4.基站定位 5.WIFI定位 6.混合定位 目前,移动端大致通过三种方式来进行设备定位:GPS.基站.wifi.本文就详细的讲 ...

  6. ios wifi 定位_iOS中三种定位方式

    手机基站定位 原理 每个手机基站都有一个标识符,iPhone或3G iPad可以搜集周围所有收到信号的基站和它们的标识符,通过联网发送到苹果云端服务器,再由服务器根据这些基站的的位置信息查询并计算出当 ...

  7. 百度地图三种定位方式测试(高精度、低功耗、仅用设备)

    百度地图三种定位方式测试(高精度.低功耗.仅用设备) Android定位SDK自v7.0版本起,按照附加功能不同,向开发者提供了四种不同类型的定位开发包,可根据不同需求,自有选择所需类型的开发包使用. ...

  8. python常用的OCR文字识别与图片定位方式

    python常用的OCR文字识别与图片定位方式 前言 统一版本 更换pip源 1. Python调用百度文字识别ocr的实现方式 1.1 使用PyCharm安装依赖 baidu-aip chardet ...

  9. CSS中常用的几种定位方式

    定位的基本语法: position:方式 top: 多少px; right: 多少px; left: 多少px; bottom: 多少px; 有常用的几种方式,如下: 第一种:相对定位 relativ ...

最新文章

  1. Cf Round #403 B. The Meeting Place Cannot Be Changed(二分答案)
  2. 技术系列课|“主动降噪”到底有多厉害?
  3. cisco 动态多点***原理
  4. 为什么linux的新得立软件下载,linux,debian_蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理?,linux,debian - phpStudy...
  5. 自己动手从0开始实现一个分布式RPC框架
  6. 辐流式重力浓缩池计算_注册考试重点!平流式、竖流式、辐流式、斜板式4大沉淀池构型...
  7. 突然挂了!Redis 缓存都在内存中,这下完了!
  8. 分时问候并显示不用图片案例
  9. stvd使用中的一些问题
  10. 数学管理联考-无限循环小数如何转化为分数
  11. excel计算机课程表,Excel如何制作课程表
  12. java边界布局东南西北_第58节:Java中的图形界面编程-GUI
  13. HDLBits——Replication operator位扩展 (非常有用的一道题目)
  14. html相同数据合并单元格合并单元格,Javascript合并表格中具有相同内容单元格示例...
  15. 计蒜客: 德克萨斯长角牛 (最短路)
  16. win10安装sshpass_Win10自带的ssh客户端key权限设置
  17. 手机打字软件如何测试打字快,手机打字学好拼音最笨的方法 手机打字怎么练才能快...
  18. pycharm设置项目编码
  19. ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理
  20. 【Matlab DVRP】蚁群算法求解带距离的车辆路径规划问题【含源码 1040期】

热门文章

  1. 基于JAVA+SpringBoot+Mybatis+MYSQL的化妆品售卖系统
  2. linux 文件系统字体小,基于嵌入式Linux平台的最小文件系统的制作
  3. xml mysql配置详解_mapper.xml配置文件详解
  4. 最简单的SpringMVC + Maven配置
  5. mysql 编码utfmb4
  6. Cisco无线mDNS
  7. 重新认识一遍JavaScript - 2
  8. JavaWeb【Velocity】
  9. LeetCode 10 Regular Expression Matching(字符串匹配)
  10. 通过系统表获取SQL,Access,Oracle数据库的元数据信息