自动化测试appium
Appium 概念Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。Appium使用WebDriver的json wire协议,来驱动...
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 Capabilitie
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 直接安装:
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。
官网地址:https://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('https://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\webdriver.py", line 87, in __init__
self.start_session(desired_capabilities,browser_profile) File"C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 141, in start_session
'desiredCapabilities': desired_capabilities,
File"C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 199, in execute
response = self.command_executor.execute(driver_command, params)
File"C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 395, in execute
return self._request(command_info[0], url, body=data)
File"C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 463, in _request
resp = opener.open(request, timeout=self._timeout)
File "C:\Python27\lib\urllib2.py", line 394, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 412, in _open'_open', req)
File "C:\Python27\lib\urllib2.py", line 372, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1199, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Python27\lib\urllib2.py", line 1170, in do_open
r = h.getresponse(buffering=True)
File "C:\Python27\lib\httplib.py", line 1027, in getresponse
response.begin()
File "C:\Python27\lib\httplib.py", line 407, in begin
version, status, reason = self._read_status()
File "C:\Python27\lib\httplib.py", line 371, in _read_status
raise BadStatusLine(line)
BadStatusLine: ''
安装 python-client
python-client 的项目名称叫:Appium-Python-Client。
安装方式:pip install Appium-Python-Client
该项目依赖selenium
在python中测试:from appium import webdriver,导入成功说明安装完成
如果使用其他语言,则安装其他语言的client
安装 JDK
app sdk的运行需要JDK的支持,因此需要先安装JDK需要配置JAVA_HOME,并设置path路径。
安装 Android SDK
进行模拟器测试时,需要SDK的支持。如果真机测试的话,会用到platform-tool,例如adb等工具。因此建议安装SDK。
Android SDK 下载地址:
https://tools.android-studio.org/index.php/sdk
选择对应平台版本下载,这里选择:
installer_r24.4.1-windows.exe