Appium
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
技术架构
功能\Driver | appium-android-driver | appium-uiautomator2-driver | appium-espresso-driver |
---|---|---|---|
用途 | 驱动UIAutomator1 | 驱动UIAutomator2 | 驱动espresso |
automationName | UiAutomator1 | UiAutomator2 | Espresso |
包形式 | AppiumBootstrap.jar | appium-uiautomator2-server-v${version}.apk | TODO待研究 |
包依赖地址 | bootstrap/bin/ | appium-uiautomator2-server/apks/ | TODO |
优点 | jar包形式,免安装,一个命令直接启动,权限级别是shell级别 | 官方推荐使用2,对高版本兼容性好 | 控件识别能力强 |
缺点 | 对高版本兼容性差,容易无法识别控件 | apk形式,需要安装 | apk形式,需求安装,并且是侵入式的,可能带来风险 |
Server模块 | 在相同工程中,Bootstrap目录,maven工程,主要目标是在bin目录下输出AppiumBootstrap.jar | 不同工程,单独的另外一个Nodejs工程:appium-uiautomator2-server | 相同Nodejs工程,espress-server目录,gradle工程 |
Appium组件:
Appium Server:是appium的服务器。一个web接口服务,使用nodejs实现
Appium Desktop是一款适用于mac和windowslinunx的开源的应用程序,他以美观而灵活的用户界面提供Appium自动化服务器的强大工具,
Appium环境搭建
1.安装node.js node -v :查看版本 npm -v 是node.js中的包管理的工具,
2.安装appium 可以通过淘宝镜(npm.taobao.org)像 npm install -g cnpm –register=https://reistry.npm.taobao.arg 使用cmd:cnpm install -g appium1.7.2-g
where appium可查看安装路径,运行 cmd: appium
3.安装python
4.安装pycharm
Appium会话—— Capability
desired Capabilitys的功能是配置Appium的会话,是一组的键值对的集合,其中键值对设置对应的名称而值设置对应的值,它们将作为JSON对象发送到Appium。
{ "platformName": "iOS", "platformVersion": "11.0", "deviceName": "iPhone 7", "automationName": "XCUITest", "app": "/path/to/my.app" }
这组期望的能力的表示为Appium到在iPhone 7模拟器与iOS 11开始自动化会议,使用的XCUITest驱动,以/path/to/my.app
作为待测应用程序。
session:
Appium的客户端和服务端之间的通信必须在session中的上下文中进行客户端发起通信时候首先技术逆行json对象给服务器,然后创建session的ID返回客户端,之后客户端可以用session的Id来操作