Robotframework-Appium系列:登录操作

发表于:2018-3-26 11:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:janehost    来源:博客园

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

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号