Robotframework-Appium系列:登陆操做

以前Appium的环境已经配置完成(参考Robotframework-Appium系列:安装配置),接下来就是如何使用Appium来完成咱们的apk的测试工做。html

1、环境准备

所需的软件列表以下服务器

  • Robotframework
  • Appium
  • Android模拟器--夜神模拟器
  • 测试的apk文件
  • uiautomatorviewer:apk软件定位工具

启动上述列出的软件,如截图所示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软件定位工具,本机启动位置和截图如图所示

    2、RobotFramework关键字封装

uiautomatorviewer定位apk元素

安装apk完成以后,打开须要测试的apk,点击图标所示1,定位元素如图

说明

1. 图标1处,打开apk后,点击此处能够定位当前页面中的全部元素信息

2. 图标2处,定位的用户名的具体元素定位

项目结构和library以及resource的导入

项目结构如图所示

关键字封装

接下来就是关键字封装,在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}

这样,登录的用户名的关键字已经封装好了,在下次使用的时候能够直接使用封装好的关键字-输入用户名便可。

3、登录流程

关于登录页面的关键字封装完成以后,接下来就是登录流程的梳理,针对测试apk,登录的步骤以下:

  • 打开应用apk程序
  • 在欢迎页面中点击开始
  • 输入登录的用户名
  • 输入登录的密码
  • 点击登录
  • 跳过新手指引

根据登录的流程,接下来就是针对已经封装好的关键字进行流程的操做,代码以下:

登陆成功
打开应用程序
点击开始
截图    login
输入用户名    ${username}
输入密码    ${password}
点击登陆
截图    login
跳过新手指引
截图    login

4、断言

而对于一个测试用例而已,最重要的就是断言,而针对登录成功的断言,咱们只须要判断登录的用户名和咱们输入的用户名是否一致,若是一致则登录成功,不然登录失败。
而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包,因此须要加上包名

    5、集成jenkins执行用例

    以前偶然发现集成工具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}

如图

相关文章
相关标签/搜索