当前位置 : 主页 > 网络安全 > 测试自动化 >

Appium

来源:互联网 收集:自由互联 发布时间:2021-06-19
背景介绍 1.1 Appium是什么 Appium是一个APP的自动化框架,可用于测试APP、网页(web)、混合型应用,而且是跨平台(可以针对不同平台用一套api来编写测试用例) 1.2 Appium的C/S架构 Appium遵守RE

 背景介绍

1.1 Appium是什么

Appium是一个APP的自动化框架,可用于测试APP、网页(web)、混合型应用,而且是跨平台(可以针对不同平台用一套api来编写测试用例)

1.2 Appium的C/S架构

Appium遵守REST设计风格的web服务器,它接受客户端的连接,接客户端的命令,在手机设备上执行命令,通过HTTP的响应收集命令执行的结果,这种架构给使用者提供很好的开放特性,只要某种语言有http客户端的api,我们就可以通过这个语言写我们的测试代码

1.3 Appium优点

l 开源

l 跨架构:NativeApp、Hybird App、Web App

l 跨设备:Android、iOS、Firefox OS

l 不依赖源码

l 使用任何WebDriver 兼容的语言来编写测试用例。比如 Java, Objective-C, JavaScript with Node.js, PHP, Python, Ruby, C#, Clojure, 或者 Perl.

l 不需要重新编译APP

1.4 Appium理念

l 你无需为了自动化,而重新编译或者修改你的应用。

l 你不必局限于某种语言或者框架来写和运行测试脚本。

l 一个移动自动化的框架不应该在接口上重复造轮子。(WebDriver)

l 无论是精神上,还是名义上,都必须开源。

 环境搭建

需要用到的软件如下(连接已经全部附上,自行下载安装以及配置环境变量):

  1. jdk

2.Android-sdk

3.Python

4.pycharm

5.Node.js(如果苹果电脑推荐使用brew安装:brew install node)

6.Appium(如果不需要客户端可以直接安装:npm install -g appium)

7.Appium-doctor(npm install -g appium-doctor)

8.校验ios环境(appium-doctor --ios),校验安卓环境(appium-doctor --android)

9.启动appium

电脑终端输入: appium --session-override ,出现下面返回值则启动成功,可以开始运行代码了

安装完上述软件之后,环境就搭建成功了,下面是一些安装过程中可能遇到的坑,共勉:

2.1 安装appium-doctor可能提示没有权限,如果提示Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules’错误
解决方法:使用sudo npm install -g appium-doctor命令安装,如果提示:operation not permitted,试试2.2的方法

2.2 MAC升级之后电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下依然无法修改文件,2.1的方法可能就不太好使了,我们需要关闭该保护机制,具体操作附上网上截图一份(一定要长时间按住command+R,时间太短是出不来了)

2.3 校验ios和安卓环境,如果有的没有校验通过,则需要一步一步排查

2.3.1 安卓环境变量配置问题:MAC用户进入.bash_profile里配置环境变量如下:

export ANDROID_HOME=~/Library/Android/sdk
export PATH=/Users/yangfangming/Library/Android/sdk/platform-tools/:PATH export JAVA_HOME=PATHexportJAVAH?OME=(/usr/libexec/java_home)
export PATH={JAVA_HOME}/bin:JAVAH?OME/bin:PATH

安卓元素抓取
1、打开/Users/icourt/Library/Android/sdk/tools/bin/uiautomatorviewer(如果打不开,卸载sdk9,装sdk8即可)

2、连接手机点击左上角的手机图标,即可以抓取当前手机页的元素

appActivity获取
1、打开APP

2、执行 adb logcat>/Users/icourt/Desktop/log.txt、胡乱的对APP做一些操作

3、Ctrl+c 结束adb命令

4、打开log.txt文件,搜索:Displayed

- PO框架搭建及用例书写

框架详解

采用最常见的PO(page object)模型设计,通俗解释一下就是每个页面当成一个对象,给这些页面写一个类,主要就是完成元素定位和业务操作;至于测试脚本要和他区别开来,需要什么就去这些页面类调用即可。PO(page object)模型的好处就是如果页面元素发生变化,你去维护页面类即可,测试类基本不用管。(当然是理想情况,后期的坑还需要慢慢填)

PO模式的框架流程:

PO代码示例:

Base_page

send_email

login_page

test_login_pwd

runtest

邮件示例:

用例维护
各个功能模块的负责人只需要维护这三个文件下的py脚本即可

common:如果涉及到公用方法,eg:页面的切换、滑动、toast检查等,请封装在公共方法里,以便其他模块直接调用

pages:各个模块自己的页面,eg:登陆页面、任务页面等,可以将页面的所有元素封装在一个方法里,模块负责人维护自己模块的页面元素

test_case:用例都放在该文件下面,进行统一管理

源码地址:

https://github.com/Dawnwangxiaoying/auto-test/tree/master/App

网友评论