Appium

- 背景介绍

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/: P A T H e x p o r t J A V A H O M E = PATH export JAVA_HOME= PATHexportJAVAHOME=(/usr/libexec/java_home)
export PATH= J A V A H O M E / b i n : {JAVA_HOME}/bin: JAVAHOME/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做一些操作
e

3、Ctrl+c 结束adb命令

4、打开log.txt文件,搜索:Displayed
在这里插入图片描述

- PO框架搭建及用例书写

框架详解

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

PO模式的框架流程:
在这里插入图片描述

PO代码示例:

GitLab源码地址:https://code.alphalawyer.cn/test/automation.git
在这里插入图片描述

Base_page
在这里插入图片描述

send_email
在这里插入图片描述

login_page
在这里插入图片描述

test_login_pwd
在这里插入图片描述

runtest
在这里插入图片描述

邮件示例:
在这里插入图片描述

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

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

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

test_case:用例都放在该文件下面,进行统一管理
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值