Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法
学习目的:
xpath定位是针对常规定位方法中,最有效的定位方式。
场景:
页面元素的定位。
正式步骤:
step1:常规属性
示例UI

示例UI相关HTML代码

相关代码示例:
#通过id定位
dr.find_element_by_xpath('//*[@id="loginform-username"]').click()
#通过tag标签定位
#*号可以匹配任何标签
dr.find_element_by_xpath('//*[@id="loginform-username"]').click()
#指定标签名称
dr.find_element_by_xpath('//input[@id="loginform-username"]').click()
#通过class定位
dr.find_element_by_xpath('//*[@class="form-control"]').click()
#通过name定位
dr.find_element_by_xpath('//*[@name="LoginForm[username]"]').click()
step2: 其他属性
#其他属性,就是本文中非id、name、class之外的一些页面定位的属性
dr.find_element_by_xpath('//*[text()="定位的页面文本"]')
#多个属性组合
dr.find_element_by_xpath('//*[@type="text" and @id="loginform-username"]')
step3: 层级关系
a.如果一个元素,它的属性不是很明显,无法直接定位到,这时候我们可以先找它老爸(父元素)
b.找到它老爸后,再找下个层级就能定位到了
HTML代码释义

解决方案
#通过爸爸节点定位
dr.find_element_by_xpath('//*[@class="form-group field-loginform-username required has-error"]/input').click()
#通过爷爷节点定位
dr.find_element_by_xpath('//*[@id="login-form"]/div[1]/div/input')
step4: 索引定位
Html代码演示

解决方案:
#xpath索引定位,索引初始值从1开始
dr.find_element_by_xpath('//select[@id="nr"]/option[1]').click()
step5: 模糊匹配
2.掌握了模糊匹配功能,基本上没有定位不到的
3.比如我要定位百度页面的超链接“hao123”,在上一篇中讲过可以通过by_link,也可以通过by_partial_link,模糊匹配定位到。当然xpath也可以有同样的功能,并且更为强大。
#定位百度首页hao123
dr.find_element_by_xpath('//*[contains(text(),"hao123")]').click()
#模糊匹配某个属性,针对百度搜索框
dr.find_element_by_xpath('//*[contains(@id,"kw") and @class = "s_ipt"]').click()
#模糊匹配以什么开头
dr.find_element_by_xpath('//*[starts-with(@class,"s_ip")]').click()
难点分析:
没有难点,就是要多用,活学活用。
学习总结:
xpath控制了80%的页面定位解决方案
Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法的更多相关文章
- Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项
学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...
- Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条
学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- Python3 Selenium自动化web测试 ==> 第十一节 WebDriver高级应用 -- 显示等待 + 二次封装
学习目的: 掌握显示等待 掌握二次封装 正式步骤: step1:显示等待的代码示例 # -*- coding:utf-8 -*- from selenium import webdriver from ...
- Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)
前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...
- Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest
前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>
前置步骤: 上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可: ...
- Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert
学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...
- Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>
学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...
随机推荐
- js-虚拟dom
问题: vdom是什么?为什么存在vdom? vdom是如何应用的,核心的api是什么? 介绍一下diff算法 1.一些虚拟dom应用了snabbdom.其中的 h函数相当于渲染成了右侧的JS虚拟节点 ...
- idea在springboot项目中显示Run Dashboard
1.Run->Edit Configurations 2.在Templates[Defaults]-> Configurations available in Run Dashboard ...
- JavaEE企业面试问题之Java基础部分
1. Java基础部分 1.1 Java中的方法覆盖(Override)和方法重载(Overload)是什么意思? 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不 ...
- c语言:当指针成为参数后
指针就是一种指向内存地址的变量,利用它的一些特性我们可以完成很多工作 两个数字从小到大排序(引申的业务场景,对企业大佬的银行存款金额进行排序,这当然通过交换变量对应的数值来实现,否则盖茨大爷的钱可能全 ...
- python 函数中,os.linesep是干什么的
os.linesep字符串给出当前平台使用的行终止符.例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'. def write_file(filename, subdom ...
- Shiro 中的 SecurityUtils(转)
在 Shiro 中 SecurityUtils 是一个抽象类.并且没有任何子类.在其中声明了一个静态属性,三个静态方法. 静态属性 securityManager private static Sec ...
- js中错误处理机制
1.基本知识 1. 错误对象 Error,SyntaxError,RangeError, ReferenceError,TypeError,URIError 上面的都是构造函数: new 命令可以生成 ...
- checkbox选中的行数
$('[name=roomcheck]').each(function(){ if($(this).prop("checked")==true){ alert(this.id);/ ...
- CF796D Police Stations BFS+染色
题意:给定一棵树,树上有一些点是警察局,要求所有点到最近的警察局的距离不大于 $d$,求最多能删几条边 ? 题解: 考虑什么时候一条边可以被断开:这条边的两个端点被两个不同的警察局覆盖掉. 我们要设计 ...
- Dubbo——基础
一.分布式基础理论 1.1 什么是分布式系统? “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系 ...