UI自动化测试之元素定位
环境:python3.8
更新中~~
一、八大元素定位方法:
1、id
id属性,确保id唯一。
以百度输入框为例,打开Baidu,按F12,点击左上角箭头点击输入框,就能看到对应的HTML源码,<input ..> 标签中的 id就是id属性
代码实现:driver.find_element(By.ID, "kw")
2、XPATH
用得比较多的方法.
F12后再Ctrl+F 输入XPATH值能检索结果是否唯一、是否定位正确
- xpath绝对定位:严格按照元素顺序,过于依赖当前页面元素结构,不稳定
- xpath相对定位:灵活、用法多、建议用,根据元素本身特征查找、不用按特定顺序.包含以下这些方法:
1).属性定位: //标签名[@属性名=属性值]
2).多个属性组合:and or //标签名[@属性名=属性值 and @属性名=属性值]
3).文本定位://标签名[text()="文本"]
百度例子://span[text()="女儿给爸爸洗脚拍照后转身就走"]
4).文本与属性值组合: //标签名[text()="已签到" and @class="tip"]
5).模糊匹配-包含:
//标签名[contains(text(),"文本")]
//标签名[contains(text(),"文本") and @属性值=属性值]
百度例子://span[contains(text(),"女儿给爸爸洗脚拍照后转身就走") and @class="title-content-title"]
6). * (尽量少用) 模糊匹配
//*[text()="签到"]
//span[@*="member"]
//*[@*="member"]
7).层级定位 :
7.1. 通过父或者祖先找子元素 (经常用到),通过自己本身的特征无法唯一定位自己的时用层级定位。格式:
//父标签[@id="u1"]//子标签[@name="tj_login"]
这里用双斜杠比较灵活,单斜杠没那么灵活
7.2.轴定位:通过子元素找祖先元素
语法: 已知元素//...//../轴名称::标签名[@属性名=“属性值” and @属性名=“属性值”]//..
4种轴名称:
parent:父元素 -- 通过子找父 (找到子元素再父)
//子标签名[@属性名="属性值"]/parent::父标签[@属性名=“属性值”]
//子标签名[@属性名="属性值"]/parent::父标签*
ancestor: 通过子找祖先元素
//子标签名[@属性名="属性值"]//子元素标签/ancestor::父标签[@属性名=“属性值”]
preceding-sibling: 通过我 找姐姐/哥哥元素(同一父元素,排在你前面的)
//标签名[@属性名="属性值"]//标签/preceding-sibling::标签[@属性名=“属性值”]
following-sibling: 通过哥哥姐姐找弟弟
//标签名[@属性名="属性值"]//标签/following-sibling::标签[@属性名=“属性值”]
3、link_text
超链接文本, a标签之间的文本
<a>文本</a>
4、partial_link_text
部分超链接文本。
5、name
name属性
6、tag_name
指的是 <> 尖括号中的标签名
7、class_name
class属性
8、css_selector
查看源码实现:(by.py)
二、实现
1. 找单个元素 driver.find_element() 结果是字符串
2. 找多个元素driver.find_elements() 结果 是列表, 找到后再根据下标再定位
元素定位没问题,运行脚本仍然报错提示找不到元素原因:
1、元素在iframe中,这个时候要switch_to.frame,切换iframe
2、添加了智能等待, 还是提示找不到元素。driver.implicitly_wait()
这个时候加个硬性等待即可。 time.sleep(1)
UI自动化测试之元素定位相关推荐
- Web UI自动化测试之元素定位
目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代.让我们看看二者的对比: 接口自动化测试是跳过前端界面直接对服务端的测试,执行效率和覆盖率更高,维护成本更低,整 ...
- UI自动化测试之元素定位方法
Python语言Selenium库UI自动化测试(一)元素定位方法 简介 当我们日常搭建自动化测试框架时,用Python调用浏览器时,通常有Requests库.Selenium库 这两个库是进行爬虫或 ...
- UI自动化之元素定位(xpath、css)
很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...
- Appium移动端自动化测试之元素定位(三)
1.name定位 driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Tel').send_keys('15817252876 ...
- Python+Appium自动化测试之toast定位
目录 一. 前言 二. 环境 三. toast定位准备与定位方法 1. 准备 2. 定位方法 四. 示例代码 一. 前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位 ...
- appium自动化,appium元素定位
appium自动化,appium元素定位 Appium是一款综合性软件,可让您在本地.移动或混合应用程序上执行复杂的测试. 简而言之,appium自动化框架允许您在不需要 SDK 或在每次测试会话后重 ...
- [免费视频教程]UI自动化测试之Jenkins配置教程
[免费视频教程]UI自动化测试之Jenkins配置教程 image 前一段时间帮助团队搭建了UI自动化环境,这里将Jenkins环境的一些配置分享给大家. 背景: 团队下半年的目标之一是实现自动化测试 ...
- Python+selenium自动化八大元素定位方法及实例(超详细)
目录 一.selenium模块中的find_element_by_id方法无法使用 二.Python+selenium自动化八大元素定位方法 使用场景: 1.通过id属性定位:driver.find_ ...
- selenium~初识自动化测试之元素的定位、对象的操作、浏览器的操作、键盘事件、鼠标事件
文章目录 准备工作 元素定位 操作测试对象 鼠标点击与键盘输入 智能等待.submit提交表单.获得text文本元素 打印title和url 浏览器的操作 键盘事件 鼠标事件 准备工作 最好安装好火狐 ...
- 自动化测试之元素的定位
目录 一.元素定位 1.根据id属性进行定位(id是唯一的) 2.name属性进行定位 3.tag name(标签名) 定位和class name(标签中的class属性)定位 (1)使用class ...
最新文章
- python pandas DataFrame 转置
- 汇编中的.section命令及汇编语言程序都至少声明的3个段
- 7款外观迷人的HTML5/CSS3 3D特效按钮特效
- select fd_set
- asp.net mysql 读写分离_[ASP.net教程]SqlSugar ORM已经支持读写分离
- 68.vivado与modelsim的关联以及器件库编译
- 华为hcip认证题库在哪找?HCIP如何考取?
- 关于禁用Cookie的问题以及解决办法
- OKHTTP系列(九)---http请求头(header)作用
- 图片作为背景的相关方法
- html中表格边框好看的样式,table完美css样式 table表格边框样式
- BATCH 批处理(一)
- php 获取视频首帧,PHP获取视频的第一帧与时长
- Sketch:无损放大像素画
- Java项目:田径运动会管理系统(java+SpringBoot+Thymeleaf+HTML+maven+mysql)
- 基于Web的校园互助平台设计与实现
- dhcp服务器增加vlan,简谈多VLAN DHCP服务设置
- 设计的魔法-动效设计
- Excel日期转换为大写中文数字
- 简述java开发环境的建立过程_java开发环境的完整搭建过程
热门文章
- linux docker运行exe,在Windows上的Bash上运行Docker容器
- ExcelJS 将JSON数组转换成为Excel文件 / JSON转换成为XLSX / 网页导出Excel表格
- RS编码过程通俗理解
- 专为存储设计的LRC编码
- linux下keytool生成证书_keytool命令
- log4cpp 详解及使用操作
- ipixsoft swf to html5 converter,iPixSoft SWF to Video Converter
- 高科技公司的 CEO 要写代码吗?
- maven 压缩html,使用YUI Compressor Maven插件压缩 js,css 输出war包
- 大华平台linux密码忘记,大华乐橙sn1(海思hi3798c)刷机