appium基本使用方法
Appium 概念
Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。
Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。
原生的应用是指用android或ios的sdk编写的应用。原生应用程序看起来(外观)和运行起来(性能)是最佳的。
移动网页应用是指网页应用,HTML5应用程序使用标准的Web技术,通常是HTML5、JavaScript和CSS。
混合应用程序让开发人员可以把HTML5应用程序嵌入到一个细薄的原生容器里面,集原生应用程序和HTML5应用程序的优点(及缺点)于一体。
appium选择了client-server的设计模式。
通过上面一张图简单展示了appium的工具原理。
客户端/服务器架构
Appium 的核心是暴露 REST API 的网络服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复表示执行结果的 HTTP 响应。客户端/服务器架构实际给予了许多可能性:我们可以使用任何有 http 客户端 API 的语言编写我们的测试代码,不过选一个Appium 客户端程序库 使用更容易。我们可以把服务器放在另一台机器上,而不是执行测试的机器。
会话(session)
自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但都以发给服务器一个 POST /session
请求结束,请求中包含一个被称作 'desired capabilities' 的 JSON 对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID。
Desired Capabilities
Desired capabilities 是一些发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动化会话。也有各种可以在自动化运行时修改服务器行为的 capabilities。例如,我们可以把 platformName
capability 设置为 iOS
,告诉 Appium 我们想要 iOS 会话,而不是 Android 或者 Windows 会话。我们也可以设置 safariAllowPopups
capability 为 true
,确保我们在 Safari 自动化会话中可以使用 javascript 打开新窗口。有关 Appium capabilities 的完整列表,请参阅 capabilities doc 。
Appium 服务器
Appium 是用 Node.js 写的服务器。它可以从源码构建安装或者从 NPM 直接安装:
$ npm install -g appium
$ appium
Appium 客户端
有多个客户端程序库(Java、Ruby、Python、PHP,、JavaScript 和 C# 的)支持 Appium 对 WebDriver 协议的扩展,你需要用这些客户端程序库代替通常的 WebDriver 客户端。在这里浏览所有程序库的列表。
Appium.app, Appium.exe
有 Appium 服务器的图形界面包装器可以下载。它们打包了 Appium 服务器运行需要的所有东西,所以你不需要为 Node 而烦恼。它们还提供一个 Inspector 使你可以查看你应用的层级结构,这在写测试时很方便。
appium安装配置
Appium-desktop安装
原来版本的appium-server不再维护,新的工具 是Appium-desktop。
官网地址:http://appium.io/,下载合适的版本
windows平台下载:appium-desktop-setup-1.4.0.exe
双击进行安装,安装过程不需要任何设置
安装完成桌面会生成一个紫色的appium 图标,双击打开。
默认显示监控的 host 和 port ,这和 Appium-Server中是一致的。点击 “Start Server V 1.7.2” 按钮启动服务。
注意:不能在浏览器中设置代理
Traceback (most recent call last):
File "C:\Users\liujiey\Desktop\test.py", line 20, in setUp
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
File "build\bdist.win32\egg\appium\webdriver\webdriver.py", line 36, in __init__
super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriv