以前Appium的环境已经配置完成(参考Robotframework-Appium系列:安装配置),接下来就是如何使用Appium来完成咱们的apk的测试工做。html
所需的软件列表以下服务器
启动上述列出的软件,如截图所示app
RobotFramework打开界面如图所示
ide
Appium配置界面和启动界面如图所示
工具
说明post
1. 未启动显示的是三角形,启动以后变为正方形测试
2. 测试的应用程序的路径ui
3. 测试的应用程序的包名以及activity名,在路径输入以后,会自动显示,不用修改,使用默认code
4. 测试apk的平台和使用的工具,这里选择的是Android6.0,Appium工具orm
Appium启动成功界面如图所示
Android模拟器--夜神模拟器,如图所示
在第一次使用夜神模拟器的时候,会自动安装Appium Settings和Unlock两个工具;apk文件能够直接拖到夜神模拟器中,模拟器会自动安装。
uiautomatorviewer:apk软件定位工具,本机启动位置和截图如图所示
安装apk完成以后,打开须要测试的apk,点击图标所示1,定位元素如图
说明
1. 图标1处,打开apk后,点击此处能够定位当前页面中的全部元素信息
2. 图标2处,定位的用户名的具体元素定位
项目结构如图所示
接下来就是关键字封装,在robotframework中首先须要打开测试的应用程序,打开应用程序的关键字封装代码以下
打开应用程序 Open Application http://192.168.8.170:4723/wd/hub platformName=Android platformVersion=6.0.0 deviceName=192.168.8.170:62001 app=F:\\test\\mis.apk appPackage=com.xxx.xxx ... appActivity=com.xxx.xxx.atys.StartAty unicodeKeyboard=True resetKeyboard=True
界面如图所示
打开应用程序以后,就须要定位咱们刚刚使用uiautomatorviewer工具定位的登录用户名,具体代码以下
输入用户名 [Arguments] ${username} AppiumLibrary.wait until page contains element id=com.xxx.xxx:id/username AppiumLibrary.input text id=com.xxx.xxx:id/username ${username}
这样,登录的用户名的关键字已经封装好了,在下次使用的时候能够直接使用封装好的关键字-输入用户名便可。
关于登录页面的关键字封装完成以后,接下来就是登录流程的梳理,针对测试apk,登录的步骤以下:
根据登录的流程,接下来就是针对已经封装好的关键字进行流程的操做,代码以下:
登陆成功 打开应用程序 点击开始 截图 login 输入用户名 ${username} 输入密码 ${password} 点击登陆 截图 login 跳过新手指引 截图 login
而对于一个测试用例而已,最重要的就是断言,而针对登录成功的断言,咱们只须要判断登录的用户名和咱们输入的用户名是否一致,若是一致则登录成功,不然登录失败。
而apk中登录的用户名定位须要先进入我的中心,因此封装的关键字以下
进入我的中心 appiumLibrary.click element id = com.xxx.xxx:id/txt_more1 获取登陆的用户名 ${getLoginName} appiumLibrary.get text id = com.xxx.xxx:id/tvName [Return] ${getLoginName}
那么接下来就是断言,在robotframework这里使用should contain
关键字断言,代码以下
#断言 进入我的中心 ${getLoginName} 获取登陆的用户名 BuiltIn .should contain ${username} ${getLoginName}
注意
此处的关键字should contain
使用的是Builtln
包,因此须要加上包名
以前偶然发现集成工具jenkins,使用一段时间以后,发现它的功能竟这么强大,基本上咱们想要实现的集成均可以经过jenkins集成完成操做,省去了一系列麻烦的操做。
目前接触的更新测试环境的代码、接口postman和jmeter均可以使用jenkins工具进行集成构建,对于公司长期的项目进行定时构建,而且发送测试结果给指定的负责人。这样早上来到公司就能够直接看到测试结果。而对于屡次迭代的项目测试,不只提升了工做效率,相对而言也节省了成本。
具体的配置,能够参考:RobotFrameWork自动化系列:安装配置,具体配置截图所示
jenkins运行结果展现
邮件提醒和文件配置能够参考:JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建
这里集成结果会发送到指定的邮箱中,这样咱们就能够根据测试结果提bug到bug管理系统了。
封装的全部关键字代码展现以下
打开应用程序 Open Application http://192.168.8.170:4723/wd/hub platformName=Android platformVersion=6.0.0 deviceName=192.168.8.170:62001 app=F:\\test\\mis.apk appPackage=com.xxx.xxx ... appActivity=com.xxx.xxx.atys.StartAty unicodeKeyboard=True resetKeyboard=True 切换服务器 #切换登陆服务器 AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id = com.xxx.xxx:id/login_iv_icon AppiumLibrary.click element id=com.xxx.xxx:id/login_rela_login 截图 [Arguments] ${ScreenName} AppiumLibrary.Capture Page Screenshot ${ScreenName} 输入用户名 [Arguments] ${username} AppiumLibrary.wait until page contains element id=com.xxx.xxx:id/username AppiumLibrary.input text id=com.xxx.xxx:id/username ${username} 输入密码 [Arguments] ${password} AppiumLibrary.input text id=com.xxx.xxx:id/pwd ${password} 点击登陆 AppiumLibrary.click element id=com.xxx.xxx:id/login 跳过新手指引 AppiumLibrary.click element id = com.xxx.xxx:id/jump_over 点击监测统计 AppiumLibrary.click element id = com.xxx.xxx:id/txt_poi1 点击日历选择 AppiumLibrary.click element id =com.xxx.xxx:id/anIvRight 进入我的中心 appiumLibrary.click element id = com.xxx.xxx:id/txt_more1 获取登陆的用户名 ${getLoginName} appiumLibrary.get text id = com.xxx.xxx:id/tvName [Return] ${getLoginName} 登陆页面点击下一步 AppiumLibrary.click element id = com.xxx.xxx:id/guide4_btn
完整的登录成功测试用例代码以下
登陆成功 打开应用程序 点击开始 截图 login 输入用户名 ${username} 输入密码 ${password} 点击登陆 截图 login 跳过新手指引 截图 login #断言 进入我的中心 ${getLoginName} 获取登陆的用户名 BuiltIn .should contain ${username} ${getLoginName}
如图