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 ...
随机推荐
- JSP中JavaScript校验用户名等重复
$(function () { $("#unitFrom").validate({ errorClass:"errorInfo", //默认为错误的样式类为:e ...
- Linux-目录结构及文件系统
1.Linux 系统的顶层目录结构 / 根目录 ├── bin 存放用户二进制文件 ├── boot 存放内核引导配置文件 ├── dev 存放设备文件 ...
- 腾讯云主机的公网无法访问,putty和FileZilla连接不上
1.解决方法一(之前百度都是这种安全组忘了添加) 2.解决方案二(ps:我是用centos的,然后不知道为什么访问不了,端口也是全部开的) service network restart 重置网络命令 ...
- 拿来主义:treeview插件父子节点问题
鄙人公司没有专门的前端,所以项目开发中都是前后端一起抡.最近用bootstrap用的比较频繁,发现bootstrap除了框架本身的样式组件外,还提供了多种插件供开发者选择.本篇博文讲的就是bootst ...
- android 自定义 Application
android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类.且application对象的生命周 ...
- 在URL地址中传值
URL: re_path('edit_teacher-(\d+).html', views.handle_edit_teacher), HTML: <a href='/edit_teacher- ...
- boost学习 内嵌类型检测 与 any 的代码练习
本文是学习 boost源码的一些练习 参考文章来自 刘未鹏 C++的罗浮宫(http://blog.csdn.net/pongba) 目录 http://blog.csdn.net/pongba/ar ...
- Firefox录制时浏览器提示代理服务器拒绝连接
解决方法:检查火狐浏览器的代理设置是否正确,在 菜单栏 工具->选项->高级->网络->连接->设置里.将“配置访问因特网的代理”选项改为“无代理”.
- ManageEngine SeviceDesk Plus帮助台和资产管理软件
- OpenCV图像分割1
1.基于阈值 1.1原理 灰度阈值化,假设输入图像为f,输出图像为g,则阈值化公式如下: g(i,j)=1 当f(i,j)>=T g(i,j)=0 当f(i,j)<T 1.2适用范围 当 ...