Robot Framework+Appium实现项目自动化(工作实战项目)
你是否想要入门rf+appium实现自动化,或者是工作中会运用到?不知道从何下手,然后网上搜索一天,收获并不大?robot framework + appium项目实战来了。这是工作中真实的项目。终:自动化实现过程如果有从事金融行业测试的朋友,就可能对下面业务比较熟悉:实现:打开app–>进入我的页面进行登录–>进入交易页面中的普通买入–>输入沪市股票的限价委托和市价委托,深市股
你是否想要入门rf+appium实现自动化,或者是工作中会运用到?
不知道从何下手,然后网上搜索一天,收获并不大?
robot framework + appium项目实战来了。这是工作中真实的项目。
终:自动化实现过程
如果有从事金融行业测试的朋友,就可能对下面业务比较熟悉:
实现:打开app–>进入我的页面进行登录–>进入交易页面中的普通买入–>输入沪市股票的限价委托和市价委托,深市股票限价和市价委托–>委托成功
一、robot framework
我之前的博客中,也有介绍过rf的用法,也用到了jenkins实现自动运行。这里再简单做一个介绍吧。
1.1 rf的优点
- 它是现在比较主流的自动化框架,可以实现web UI自动化、appium自动化、接口自动化。
- 它支持的库非常丰富,内置库和第三方库完全可以满足我们的日常测试工作。
- 它可以自动生成漂亮的测试报告和日志信息
- 不需要会代码
- 等
1.2 rf的缺点
- 表格输入脚本,要编辑状态下才能输入
- 保存让人无奈
- 代码编写,需要加4个空格,一不小心缩进就出问题
- 等
进入robot官网查看更多
二、appium
appium是当下app自动化80%的公司都会应用到的工具,这里不做更多介绍。我之前的博客有详细介绍环境搭建,再到实现一个简单的appium自动测试。点击这里查看:Appium环境搭建2021年最新详细教程
rf+appium的组合实现自动化,市面上大多数公司都在推行。那我们用我目前公司的项目,来实现一个股票app的买入操作自动化实战。
启动app时,记得勾选允许会话覆盖:
三、项目结构
我们利用rf的IDE–RIDE来实现:利用rf框架,基本上不会从头到尾就一个目录,一个套件,一个一个用例这样的结构。目前,都是按照:公共资源,公共数据,模块元素,模块业务,测试套件,测试用例这样的分层来实现。
首先,我会创建一个测试项目,再在里面创建三个目录,如下:
3.1 公共部分
公共部分,我们将一些每个模块都能用得上的元素,及元素生成的业务放在其中。
创建过程:右键公共部分–>New Resource–>输入名字和类型–>确定
最终生成的效果如下:
3.1.1 公共数据
什么样的是公共数据呢?比如每次登录需要的帐号、密码…
创建过程:右键公共数据–>New Scalar–>输入变量名称和值,确定
比如:创建一个username的变量:
点击OK,效果如下:
可以看到变量前面有一个圆圈里面加了个$符号。
同样的方法,我们再创建一个password的变量:
3.1.2 公共元素
首先,我们需要导入库–AppiumLibrary:
点击公共元素,点击右侧的Library
创建过程:右键公共元素–>New User Keyword–>输入关键字名称,点击OK
A. 打开app
再在打开app中,输入代码:
打开app
Open Application http://127.0.0.1:4723/wd/hub platformName=Android platformVersion=7.1.2 deviceName=ys udid=127.0.0.1:59865 appPackage=com.firstcapital appActivity=com.zztzt.android.simple.activity.tztCommHeadPageActivity unicodeKeyboard=True noReset=True skipServerInstallation=True skipDeviceInitialization=False includeStderr=True automationName=UiAutomator1
强制等待 3
打开app,就是将appium地址,手机参数信息输入进去。
强制等待,是我设置的sleep关键字,我们双击进去查看如下:
每个业务等待的时候不一琮,所以,我们强制等待时间设置成一个变量,需要多少就写多少秒。
B. 关闭app
同现,我们再创建一个关闭app的关键字:
C. 强制等待
上面已经介绍过了。
注意:其实这个公共元素,名字可能不太合适,自已理解下就OK了。名字可以由自已取,这个并不是重点。我们只知道怎么导入和应用就OK。
公共部分,我们已经完成了。
3.2 我的页面
参照上面,先创建两个目录:页面元素和我的业务资源文件。但是,我们再在这里多创建一个测试套件:我的页面登录成功。结构如下:
3.2.1 页面元素
首先,同样的,我们需要先导入相应appiumlibrary库和公共部分中的资源文件。**库显示黑色代表导入成功,资源文件蓝色代表导入成功。**导入方法同上:
A.点击我的
创建过程:右键页面元素–>New User Keyword–>输入点击我的–>OK
app图:
再进入点击我的,编写代码:
点击我的
强制等待 2
AppiumLibrary.Click Element xpath=/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[5]/android.widget.ImageView
强制等待 2
强制等待,是我们在公共元素中创建的关键字,所以,也就是刚才我们需要先导入相应的资源文件才能使用它,否则我们需要再次创建一个,但是这有点多余了。
AppiumLibrary.Click Element:这是appium点击元素操作,后面接元素属性。
注意:如果我们没有导入相应库和资源文件,那么,就会显示成黑色。不会显示成蓝色,蓝色代表成功。
B. 点击登录
app图:
同样的创建关键字,代码如下:
点击登录
AppiumLibrary.Click Element xpath=/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[1]/android.view.View[2]/android.view.View
强制等待 2
C. 输入帐号密码
app图:
其实,这一关键字可以在公共部分中就实现的(我们不换帐号和密码的情况下)
代码如下:
输入帐号密码
[Arguments] ${un}=${username} ${pwd}=${password}
Clear Text id=com.firstcapital:id/edit_account
强制等待 1
AppiumLibrary.Input Text id=com.firstcapital:id/edit_account ${un}
强制等待 1
AppiumLibrary.Input Password id=com.firstcapital:id/edit_password ${pwd}
强制等待 1
AppiumLibrary.Click Element id=com.firstcapital:id/login
强制等待 2
首先,我们会清除app帐号,再次输入帐号和密码,加入相应的等待时间,点击登录按钮。
我们上面的帐号和密码,都是使用变量。因为我们不同的测试场景,需要有不同的帐号。就可以再相应更改就OK。如果不动,我们就用公共数据中默认的就OK。
3.2.2 我的业务
基于上面实现的元素,进行组装生成业务。同样的需要导入库和资源文件。
方法同上,依然是创建一个关键字:我的页面登录成功
代码如下:
*** Settings ***
Library AppiumLibrary
Resource 页面元素.txt
Resource ../公共部分/公共元素.txt
*** Keywords ***
我的页面登录
打开app
点击我的
强制等待 5
点击登录
输入帐号密码
可以看出来,这几个,不就是我们刚才添加的关键字嘛?组合形成业务就行了。
3.2.3 我的页面登录成功
在此测试套件中,同样需要导入库和资源文件,再新建一个测试用例(New Test Case),用例如下:
是不是觉得眼花了,这什么玩意?这是用例?
是的,没错,这就是用例,这就是利用rf+appium实现的自动化测试用例。
那我们打开appium,打开模拟器运行看看:
点击运行按钮后,用例前的机器人图标是显示运行状态的。
自动执行app效果:
运行成功颜色显示:
运行成功查看报告:
看完之后,有啥感想:是不是跟我们想像中的不一样???
那我们再来对比一下传统的:
*** Settings ***
Library AppiumLibrary
Resource 我的业务.txt
*** Test Cases ***
我的页面登录成功
我的页面登录
登录测试
Open Application http://127.0.0.1:4723/wd/hub platformName=Android platformVersion=10 deviceName=HONOR X10 udid=H5X6R20514009570 appPackage=com.firstcapital appActivity=com.zztzt.android.simple.activity.tztCommHeadPageActivity unicodeKeyboard=True noReset=True skipServerInstallation=True skipDeviceInitialization=False includeStderr=True
Sleep 7
AppiumLibrary.Click Element xpath=/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[5]/android.widget.ImageView
log driver.contexts
Sleep 2
Tap ([(768,783),(987,828)],500)
AppiumLibrary.Click Element xpath=/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[1]/android.view.View[2]/android.view.View
Sleep 2
AppiumLibrary.Input Text id=com.firstcapital:id/edit_account 830000992
AppiumLibrary.Input Password id=com.firstcapital:id/edit_password 123123
Sleep 2
AppiumLibrary.Click Element id=com.firstcapital:id/login
Sleep 2
现在,实际工作中,已经没有人会这样写代码了。不实用,没法复用,更不好维护。
OK,这只是一个小模块。我们真正的业务功能才刚刚开始。
3.3 交易页面
交易页面中,我们同样的创建三个目录:两个资源文件:交易业务、交易元素,一个测试套件:普通买入。记住:导入库和相应资源文件!
3.3.1 交易元素:
app图:
00. 点击买入
A. 输入证券代码
代码如下:
代码这里用变量,用例中代码是需要根据不同场景变动的。
实际工作中:代码是可以在数据库中获取的,现在无法连接数据库,暂时会在用例中写死。
B. 输入价格
代码如下:
价格同样是根据代码而定的。
需要注意的是:价格也是可以在数据库中取的,但是,目前无法连接数据库,我们就暂时在用例中写死。
C. 输入数量
代码如下:
暂时写死数量。
D. 点击买入按钮
代码如下:
E. 点击交易tab
F. 点击确定按钮
G. 委托方式-沪市市价
3.3.2 交易业务
需要导入库和资源文件
A. 普通买入-沪A买入
B. 普通买入-深A买入
C. 沪市市价委托
D. 深市市价委托
3.3.3 普通交易测试用例
A. 普通交易-沪A买入成功
B. 普通交易-深A买入成功
C. 普通交易-沪A-最优五档剩余撤销-委托成功
D. 普通交易-深A-本方最优-委托成功
四、 运行测试用例
4.1 执行测试用例
选中测试用例,点击运行按钮:
全部运行成功,用例没有问题。
4.2 命令行执行测试
robot -d D:\profession\yc_zft\交易页面 D:\profession\yc_zft\交易页面\普通买入.robot
cmd中,切换到项目目录中,执行该命令:
查看结果。
4.2 查看测试报告
我们再查看报告:
OK。我们rf+appium实现app自动化测试在jenkins中自动运行。
五、jenkins自动运行
关于jenkins搭建的创建测试项目过程,略过。有想了解的,可以查看我之前的博客,有详细介绍。点击这里查看
5.1 创建任务
5.2 自动运行
时间到了后,它就会自动运行了。运行结果,可以在我们设置的目录中查看到。具体略过。点击这里查看
更多推荐
所有评论(0)