robotframework自动化系列:新增流程
刚接手项目的时候,要求所有流程在上线之前必须确保正向操作是正确的;这个时候又有新的模块需要测试,所以引入自动化测试是非常有必要的!通过对比,尝试使用RF进行自动化的回归测试。
测试中最常见的操作就是增删改查,所以对于自动化最简单的就是数据模块的增删改查人手进行操作。
这里先看一下web测试中的新增用例的测试点,如图所示

对于一个新增操作,我们这里以账号新增为例进行操作展示,账号新增页面元素显示如图所示

先说明一下,各个元素的定位方法:
输入用户名
[Arguments] ${username}
Wait Until Element Is Visible id=username
clear element text id=username
input text id=username ${username} #账号管理中的用户名和密码共用
输入密码
[Arguments] ${password}
Wait Until Element Is Visible id=password
input text id=password ${password} #账号管理中的用户名和密码共用
再次输入密码
input text id = ppassword ${ppassword}
手机号码
[Arguments] ${phone}
clear element text id = phone
sleep 5
input text id = phone ${phone} #用户信息共用此定位,账号信息中也共用
邮箱
[Arguments] ${email}
clear element text id=email
input text id=email ${email}
选择用户组
click element xpath = .//*[@id='unTbl']/tbody/tr[1]/td[1]/i
用户所属机构
[Arguments] ${organization_id}
Comment select from list id = organization_id 机构养老一 #账号中的所属机构共用此定位
#随机选择所属机构
${count} get matching xpath count .//*[@id='organization_id']/option
${sale_pattern_temp} evaluate random.randint(0,${count}-1) random
${sale_pattern} Convert To String ${sale_pattern_temp}
select from list by index organization_id ${sale_pattern}
数据权限
#账号新增中的全选按钮
click element xpath = .//*[@id='orgs']/li/input
账号保存
click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
Comment click button xpath = html/body/div[1]/div/div[2]/form/div[10]/div/button[1]
sleep 10
账号名称检查
${account} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2]
[Return] ${account}
而新增账号页面中元素的定位已经确定,接下来就是用例步骤:
用例目的:新建账号-成功
步骤:
- 使用管理账号登录系统
- 打开新建账号的页面,此处需要使用select window来切换tab到新建账号的页面
- 输入符合的用户名、密码、确认密码、手机号码、邮箱、选择用户组、用户所属机构和全部数据权限
- 点击保存
断言:
- 当前页面的url是否是query的页面
- 当前显示的首行账号名称是否和新增的账号名称一致
接下来就是使用RF进行用例的编写(≧▽≦)/
根据用例步骤一步步来编写用例,这里将登录和关闭浏览器2个操作封装之后,分别在setup和teardown中进行设置了,如图所示

账号添加用例代码展示如图
[Documentation] 用例目的:新建账号-成功
... 步骤:
... 1.打开新建账号的页面,此处需要使用select window来切换tab到新建账号的页面
... 2.输入符合的用户名、密码、确认密码、手机号码、邮箱、选择用户组、用户所属机构和全部数据权限
... 3.点击保存
... 断言
... 1.当前页面的url是否是query的页面
... 2.当前显示的首行账号名称是否和新增的账号名称一致
[Setup] login
打开页面 ${GuardianEdit}
Take Screenshot guardian
账号跳转
Take Screenshot guardian
${username}= gen chars 10
输入用户名 ${username}
输入密码 123456
再次输入密码 123456
${phone} Evaluate random.choice(['139','188','185','136','158','151'])+"".join(random.choice("0123456789") for i in range(8)) random
手机号码 ${phone}
邮箱 5645645645656@qq.com
选择用户组
用户所属机构 机构养老一
数据权限
Take Screenshot guardian
账号保存
sleep 10
#确认显示信息
角色确认
sleep 10
Take Screenshot guardian
Comment ${mes}= Confirm Action
Comment sleep 10
Comment Should Be Equal As Strings ${mes} 保存成功!
Comment 确认保存
Comment ${Auser} get text xpath=.//*[@id='tb_guardian']/tbody/tr[1]/td[2] #后期po
#断言当前页面的url
Location Should Be ${GuardianQuery}
${Auser} 账号名称检查
Should Match ${Auser} ${username}
log ${username}
log ${Auser}
[Teardown] close
代码截图如图所示

这样新增账号成功用例已经完成。而根据web测试点,其他用例设计如图所示

这里整个结构使用了RobotFramework的分层思想:
第一层即用例层,如上图所示
第二层是页面元素封装,如图所示

第三层是元素值的变量集合,如图所示

到此,账号新增模块的整个用例设计已经完成(o)/~
robotframework自动化系列:新增流程的更多相关文章
- robotframework自动化系列:随机下拉框
robotframework自动化系列:随机下拉框 随着项目自动化不断推进,在下拉框定位的时候出现些问题,每次下拉框选择都是相同的下拉选项,如果想每次选择的选项不一样,该如何实现呢,查找了很多资料,没 ...
- robotframework自动化系列:修改流程
在上一小节中,新增流程操作已经完成.那么接下来就是修改的流程操作了,对于一个页面的修改如何操作呢? 针对修改修改操作是在一个已经存在的账号直接修改还是新添加一个账号再修改呢?从用例设计健壮性出发,我们 ...
- robotframework自动化系列:删除操作流程以及总结
之前已经完成了登录.新增和修改的操作流程,这一节主要说明删除操作流程以及自动化的过程中出现的问题,算是对这个项目自动化的一个总结. 删除操作流程 对于系统账号管理中删除功能,删除的测试点主要如图所示 ...
- robotframework自动化系列:文本类型的下拉框
对于下拉框定位和输入,这里主要遇到有两种类型的下拉选择. 其中一个类型是select-options格式,如图 这种方式的定位可以使用select from list by value或select ...
- robotframework自动化系列:操作mysql数据库
随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息. ...
- robotframework自动化系列:登陆操作
robotframework自动化系统:登录 robotframework对于编程能力比较弱的测试人员而言,真的是雪中送炭!我们可以使用robotframework根据之前完成的测试用例,一步步完善自 ...
- RobotFrameWork自动化系列:安装配置
1. RobotFrameWork安装配置 1.1. 安装环境 64位win10家庭中文版 网上很多这方面的教程,但是比较零散,这里是自己安装配置的一个简单的笔记. 1.2. 安装说明 由于Rob ...
- Robotframework自动化系列:筛选结果数量统计
Robotframework自动化系统:筛选结果数量统计 上一个节点已经可以随机选中某一个下拉框的值,我们在使用evaluate随机数的时候需要计算下拉选项总数,这时候我们是手工计算输入的:这时候如果 ...
- 从零学习基于Python的RobotFramework自动化
从零学习基于Python的RobotFramework自动化 一. Python基础 1) 版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...
随机推荐
- WinForm 读写配置文件
//读配置文件 方法(1) //ConfigurationManager.RefreshSection("appSettings"); //强制重新载入 string settin ...
- Winform窗体间传递数据
public string passText { get { return textBox1.Text; } } //Form1中还有个按钮button1在其点击事件中有: private void ...
- mySQL使用实践
1.虚拟机安装mySQL 服务器, 宿主机分别使用navicat工具和java代码 访问mySQL,组网图如下: 2. 查看mySQL的服务器状态,如下: 3. 服务器上查看数据库和数据表内容如下: ...
- 【学习】js学习笔记---数组对象
一.属性 length 数组的大小.数组的length属性总是比数组中定义的最后一个元素的下标大一,设置属性length的值可以改变数组的大小.如果设置的值比它的当前值小,数组将被截断,其尾部的元素将 ...
- Linux“体检”指标
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...
- Rolling Hash(Rabin-Karp算法)匹配字符串
您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...
- php中常用的字符串格式化函数
ltrim():从字符串左删除空格或其他预定义字符串 rtrim():从字符串的末端开始删除空白字符串或其它预定义字符 trim():从字符串的两端删除空白字符和其他预定字符 str_pad():把字 ...
- C基本类型
C基本类型有: char:8位,可添加修改符signed或是unsigned short:16位,同有singed和unsigned int:32位,同有singed和unsigned long:在3 ...
- javascript入门知识点总结(一)
学了几天javascript,现总结一下原生javascript的基本知识点. 一.javascript基本知识 变量 定义: var a = 123; var b = 'abc'; //连写 var ...
- Java基础总结--数组
---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...