RobotFramework测试问题二:各种元素不能定位问题
各种元素不能定位问题
一、元素定位
A. Click Element + xpath
B. Click Element + contains
C. Execute Javascript + getElementsById
D. Jquery
E. Execute Javascript + getElementsByClassName
二、用例:修改用户信息
- 登录
- 点击用户的“基本资料”
- 修改用户信息
- 确定
- 检测结果
预期测试用例:
实际测试用例:
三、各种元素不能定位问题
A. 昵称元素:id vs. xpath
没有提供 id 元素,改用 xpath 相对路径定位(使用相对路径,即使上层节点改变也不会受到影响。例如,父节点或者祖父节点改变)。
绝对路径:/html/body/form/div[3]/div[2]/div[2]/div/div[2]/ul/li[1]/input
相对路径://ul[@class=’user-imfor-bar’]/li/input
Input Text xpath=//ul[@class='user-imfor-bar']/li/input Allan
- 1
B. 性别元素:Select Radio Button vs. Click Element
观察页面设计,性别元素是个 Radio。但是,在使用 Select Radio Button 时,并没有生效。尝试用 xpath 的相对路径去定位,也失效。最后,尝试用 contains 方法,成功。
Click Element xpath=//*[@id="sexchange"]/label[contains(text(), '男')] #性别
Click Element xpath=//*[@id="sexchange"]/label[2][contains(text(), '女')] #性别
- 1
- 2
C. 生日元素:Select From List By Value vs. (Click Element & Execute Javascript)
观察页面设计,生日元素是个 List。但是,在使用 Select From List By Value 时,并没有生效。
网页源代码中,并没有提供 locator & value 和 locator & index 的方式定位。而是将两者分开。
所以,改为 Click Element 定位。分两步走:先点击下拉栏,再选择年月。
Click Element selectpick_span_select_year #年
sleep 3
Click Element xpath=//ul[@class='user-imfor-bar']/li[3]/div[1]/div/div[2]/ul/li[10]
sleep 3
- 1
- 2
- 3
- 4
下面就有点让人抓狂了,T T!
在选择下拉日期的时候,定位不到元素 id=selectpick_span_select_day。
Click Element selectpick_span_select_day #日
sleep 3
- 1
- 2
还好提供了 id,尝试用 Execute Javascript 的 getElementsById 方法定位,成功。
Execute Javascript document.getElementById('selectpick_select_day').click() #日
- 1
在选择日期的时候,报错:Element … is not clickable at point。
FAIL WebDriverException: Message: unknown error: Element <label>...</label> is not clickable at point (1194, 949). Other element would receive the click: <li style="font-size:13px;height:42px; line-height:42px;">...</li>
- 1
应该是元素被覆盖,只能调整策略,使用 contains 方法。
Click Element xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '15')] #15为日期
# 也可以使用传参方式
${date} Set Variable 15
Click Element xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '${date}')]
- 1
- 2
- 3
- 4
D. 点击确定元素: Click Element + jquery
没有提供 id,也无法 xpath 定位。
Click Element dom=$("input[class='percenter-content-input']") #确定
- 1
四、用例:立即学习
- 登录,搜索课程
- 进入“课程详情”
- 点击“课程大纲”
- 随机点击“立即学习”
- 进入“学习课程”
E. 立即学习元素:Execute Javascript +getElementsByClassName
立即学习元素是隐藏元素,定位不到。xpath 方法的相对和绝对路径都无法定位。
Click Element xpath=//div[@class="cacc-kcdg-box"]/div[2]/ul/li[${index}]/a/div
- 1
需要随机点击“立即学习,但是 Execute Javascript 没有提供 getElementByXpath 方法。尝试 getElementsByClassName 方法。
${index} Evaluate random.randint(0, 10) random #产生课程随机数
Execute Javascript document.getElementsByClassName('caccb-kcdg-play')[${index}].childNodes[0].click();
- 1
- 2
RobotFramework测试问题二:各种元素不能定位问题的更多相关文章
- Robotframework测试相关库的简单整理
一. 官网地址 http://robotframework.org/#libraries 二.几类测试所用到的常用库初步整理 1. UI自动化测试 Selenium2Library.BuiltIn(自 ...
- Robotframework测试相关库
一. 官网地址 http://robotframework.org/#libraries 二.几类测试所用到的常用库初步整理 1. UI自动化测试 Selenium2Library.BuiltIn(自 ...
- WPF命中测试示例(二)——几何区域命中测试
原文:WPF命中测试示例(二)--几何区域命中测试 接续上次的命中测试,这次来做几何区域测试示例. 示例 首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置: 当前设计视图 ...
- Selenium测试专项二班隆重开班
Selenium测试专项二班隆重开班 应广大测试技术人员要求,以及企业技术需求.Selenium提前一周开课了,只针对合作的每家企业提供1-2个参训名额.预计培训60人次.但报名人数却远远超出我们预期 ...
- robotframework接口测试(二)—post request
第5行:发起post请求.因为我写了好多的参数,所以这样写的. 也可以这样写 其他行:可见[robotframework接口测试(二)—get request json]
- 异数OS TCP协议栈测试(二)--短连接篇
异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github: 异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...
- Selenium+Python系列(二) - 元素定位那些事
一.写在前面 今天一实习生小孩问我,说哥你自动化学了多久才会的,咋学的? 自学三个月吧,真的是硬磕呀,当时没人给讲! 其实,学什么都一样,真的就是你想改变的决心有多强罢了. 二.元素定位 这部分内容可 ...
- RobotFrameWork接口报文测试-----(二)demo的升级版
在上一篇,简单的demo实现了讲xml的数据发送服务器端并取得recvi_buf,然后进行了简单的解析的操作.现在就要解决之前提过的2个问题: 1. 步骤这么多,难道每写一个脚本都要重复一次么? 2. ...
- Robot Framework自动化测试(二)---元素定位
说明: 不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了seleni ...
随机推荐
- Python基础-python数据类型(四)
python数据类型 在python中,变量就是变量,它没有类型,我们所说的类型是变量所指的内存中对象的类型. python中的数据类型: 1.数字 python中没有专门定义常量的方式,通常使用大写 ...
- linux用户和组管理,/etc/passwd 、/etc/shadow和/etc/group --学习
一./etc/passwd 和/etc/shadow解释 与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,比如用户的密码 ...
- NET Core小细节杂记
1.中文编码问题: 01.在net core中,使用中文的编码,要先进行注册: //CodePagesEncodingProvider在包System.Text.Encoding.CodePages中 ...
- vue 高阶 provide/inject
1.一般情况使用都是在app.vue配置为: provide () {return {isTest: this}}, 2.所有子组件都可以引用 拿到app.vue里面的所有数据 inject: ['i ...
- android 设置LOGO和app名称
mipmap和drawable目录都可以存放图片,一般情况下,将LOGO文件存放在mipmap目录,普通图片放到drawable目录. 一.在mipmap目录添加LOGO图片 在mipmap目录右键- ...
- AUTEL MaxiSys MS908S Pro MS908SP Diagnostic Platform
AUTEL MaxiSys MS908S Pro Description : One of the MaxiSys series devices, the MS908S Pro Diagnostic ...
- jedis set 的四个重载方法(byte[]的四个自动忽略)
方法定义如下: 1.String set(String key, String value) 2.String set(String key, String value, String nxxx) 3 ...
- 2019.02.17 spoj Query on a tree VII(链分治)
传送门 跟QTREE6QTREE6QTREE6神似,改成了求连通块里的最大值. 于是我们对每条链开一个heapheapheap维护一下即可. MDMDMD终于1A1A1A链分治了. 代码: #incl ...
- div辅助线【完整版】
## <html> <head> <link rel="stylesheet" type="https://cdn.bootcss.com/ ...
- docker gitlab安装
mkdir -p /data/docker/volumes/gitlab chmod 777 /data/docker/volumes/gitlab cd /data/docker/volumes/g ...