Robot Framework自动化测试(二)---元素定位
不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的API。比如笔者所处工作中,更多的是拿Robot framework来做数据库的接口测试,当然,需要先将相关的数据库包导入。
那么测试框架的本质是什么?个人觉得有以下几个方面。
1、比较
测试实质就是“比较”,在测试之前需要先写用例,假设经过各种操作之后会得到一个预期的结果,然后,在测试的过程中按照用例的步骤会得到一个实际的结果,拿实际结果与预期结果比较。从而且进一步判断用例的成功与失败。
2、用例的组织
为什么要组职用例,因为用例有很多条,我们或在一个文件中写多条用例,或多个文件中写多条用例,总之要很好的把这些用例组织起,自动化用例是给程序去跑的,所以,更应该规范的组织起来。
3、执行结果展示
用例跑完了,成功了,失败了?用例执行到哪一步失败了?总要把这些信息展示给用户吧。
=============
回到主题,在Robot framework中元素的定位。
因为Robot framework 引入的selenium2 包,所以,假如我们学过selenium 的话,定位是一样的。因为没找到相关资料,所以,经过验证id 、name ,xpath 、css 四种定位方式是可以的,尤其后两种是“万能的”,所以可以解决99%的定位问题。
id 和name 定位
假如把一个元素看作一个人的话,id 和name可以看作一个人的身份证号和姓名。当然,这些属性值是否唯一要看前端工程师如何设计了。
百度搜索框和搜索按钮
……
<input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
……
<input id="su1" class="bg s_btn" type="submit" onmouseout="this.className='bg s_btn'" onmousedown="this.className='bg s_btn s_btn_h'" value="百度一下">
……
根据上面的例子,百度输入框可以取id 或 name进行定位。(前提是id和name的值在当页面上唯一)
id = kw1
name = wd
在Robot framework 中就是这样写的:
Input text 用于输入框的关键字,“robot framework学习”是要给输入框输入的内容。
百度按钮只id数据可以利用:
Id=su1
Click Button是按钮点击的关键字。
xpath定位
假如,一个人没身份证号没名字怎么找呢?想想你是怎么找朋友吃饭的,他手机不通,电话不回呢?直接上他家去呗,那你一定有他家住址,xx市xx区xx路xx号。Xpath 就可以通过这种层级关系找到元素。
来看看百度输入框在整个页面上的位置吧:
<html><head><body link="#0000cc"><div id="wrapper" style="display: block;"><div id="debug" style="display:block;position:absolute;top:30px;right:30px;border:1px solid;padding:5px 10px;"></div><div id="u"><div id="head"><div id="content" style="display: block;"><div id="u1" style="display: block;"><div id="m"><p id="lg"><p id="nv"><div id="fm"><form id="form1" class="fm" action="/s" name="f1"><span class="bg s_ipt_wr"><input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
1、Xpath的绝对路径:
Xpath = /html/body/div[1]/div[4]/div[2]/div/form/span[1]/input
我们可以从最外层开始找,html下面的body下面的div下面的第4个div下面的…input标签。通过一级一级的锁定就找到了想要的元素。
2、Xpath的相对路径:
绝对路径的用法往往是在我们迫不得已的时候才用的。大多时候用相对路径更简便。
2.1、元素本身:
Xpath同样可以利用元素自身的属性:
Xpath = //*[@id=’kw1’]
//表示某个层级下,*表示某个标签名。@id=kw1 表示这个元素有个id等于kw1 。
当然,一般也可以制定标签名:
Xpath = //input[@id=’kw1’]
元素本身,可以利用的属性就不只局限为于id和name ,如:
Xpath = //input[@type=’text’]
Xpath = //input[@autocomplete=’off’]
但要保证这些元素可以唯一的识别一个元素。
2.2、找上级:
当我们要找的一个人是个刚出生的婴儿,还没起名子也没有入户口(身份证号),但是你会永远跟在你父亲的身边,你的父亲是有唯一的名字和身份证号的,这样我们可以先找到你父亲,自然就找到你的。
元素的上级属性为:
<form id="form1" class="fm" action="/s" name="f1"><span class="bg s_ipt_wr"><input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
找爸爸:
xpath = //span[@class=’bg s_ipt_w’]/input
如果爸爸没有唯一的属性,可以找爷爷:
xpath = //form[@id=’form1’]/span/input
这样一级一级找上去,直到html ,那么就是一个绝对路径了。
2.3、布尔值写法:
如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三 并且 身份证号为123 的人却可以唯一的确定一个人。那么可以这样写:
Xpath = //input[@id=’kw1’ and @name=’wd’]
可以and ,当然也可以or :
Xpath = //input[@id=’kw1’ or @name=’wd’]
但or的实际意义不太。我们一般不需要说,找的人名字或者叫张三,或者身份证号是123 也可以。
Robot framework 中的写法:
CSS定位
Css的定位更灵活,因为他它用到的更多的匹配符和规格。
同样以百度输入框的代码,我们来看看CSS如何定位。
<form id="form1" class="fm" action="/s" name="f1"><span class="bg s_ipt_wr"><input id="kw1" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
id定位:
css=#kw1
class定位:
css=.s_ipt
其它属性:
css=[name=wd]
css=[type=text]
css=[autocomplete=off]
父子定位:
css=span > input
css=form > span > input
根据标签名定位:
css=input
Robot framework 中的写法:
同样一个元素,根基CSS的不同规则,可能有几十上百种写法。CSS更灵活强大,但是相比xpath 的学习成本为更高。但是css和xpath 两种定位方式是一定要学会一种,不然你的自动化工作更无法开展。
相比埋头思考苦学,你更需要的是有经验的大佬或同行给你提意见,给大家推荐一个学习交流地,644956177,里面大神会耐心帮助你解决问题,很多问题能够在线解答,另外群里面也有很多书籍资料和基础的视频,都已经打包好了,赶快加入吧。
最后我也整理了一些软件测试学习资料,对于学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这份资料也已经帮助了很多的软件测试的学习者,希望也能帮助到你。需要公众号:软件测试小dao 自取。软件测试,与你同行!陪你成为优秀的测试工程师!
既然都看到这里啦,请你帮个忙:
1、点赞,让更多小伙伴看到;
2、关注我,持续更新测试干货。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
干货分享
自动化测试6年后,终于有了属于我自己的团队···
如果你35岁恐慌了,那你真的该反思自己了···
活久见!40W年薪低?35岁测试工程师惨遭女孩嫌弃!估计是被鸡汤洗脑了!
迷茫了3年:做完这个测试项目,我终于决定辞职···
Robot Framework自动化测试(二)---元素定位相关推荐
- Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib
如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...
- Selenium自动化测试-3.元素定位(3)
------·今天距2020年81天·------ 这是ITester软件测试小栈第55次推文 大家好 我是vivi小胖虎 前面已经介绍过7种元素定位方法 相信这些积攒堆积起来的技巧 都会在实际工作时 ...
- Selenium自动化测试-3.元素定位(2)
------·今天距2020年82天·------ 这是ITester软件测试小栈第54次推文 大家好 我是vivi小胖虎 今天我们学习xpath定位元素 如果你告诉我 不是你不想用selenium做 ...
- Jenkins上配置Robot Framework自动化测试脚本工程
Jenkins上配置Robot Framework自动化测试脚本工程 现在越来越多的项目组开始引入敏捷,其中对于我们的自动化测试也有了一些新的要求.至少要把我们做的自动化案例能够持续地跑起来,能够在敏 ...
- Robot Framework 自动化测试框架核心指南-初识Robot Framework(学习笔记2)
初识Robot Framework 1.1如何创建一个自动化测试项目 1.1.2 创建测试套件 1.1.3 创建测试用例 1.2 Robot Framework基础关键字 1.2.1 如何搜索Robo ...
- Robot Framework自动化测试(五)--- 开发系统关键字
最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度:当然,在享受工具带 ...
- Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库
1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...
- Robot Framework自动化测试解决selenium2library加载失败
=======所需环境=================== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot ...
- Robot Framework自动化测试(六)--- robotremoteserver使用
robotremoteserver 是什么? Python Remote Server for Robot Framework 下载地址:https://pypi.python.org/pypi/ro ...
最新文章
- plupload 如何控制最小宽度和文件类型及跨域
- 湖大深大A级学科数超南开,华科文科胜过武大!泰晤士的首份高校评级结果,让人有点方...
- php把时间变成整数,php怎么将字符串转为整数
- 概念理解#1 第一类公民(First-class Citizen)
- vm显示打不开 /dev/vmmon:Broken pipe
- Azure上基于HTTP trigger的Lambda Function
- UE4 HTC VIVE - 番外篇 - 局域网联机三
- JDK 8 新特性- 学习中
- 【转】Rhythm Of The Rain 雨的旋律
- 【SSM 整合项目】图书管理系统
- Cocos2dx 学习之CCTableView
- uni-app自制表格及其分页
- Ubuntu上NFS的代理设置安装配置
- matlab 贝塔系数,贝塔系数的三种计算方法.pdf
- Mysql查询某个月的每一天的数据
- 职场沟通10个小技巧 让你迅速融入团队
- 听书 app,学习用途
- SQL语句常见面试题(一)
- docker 的具名挂载与匿名挂载
- sapjco3的安装