appium 简介
- appium 是开源的移动端自动化测试框架;
- appium 可以测试原生的、混合的、以及移动端的 web 项目;
- appium 可以测试 ios,android 应用(当然了,还有 firefox os)
- appium 是跨平台的,可以用在 osx,windows 以及 linux 桌面系统上;
- appium 支持多种语言 Ruby、Python、Java、JavaScript、Objective C、php、C#、RobotFramework
appium 原理
appium 的核心其实是一个暴露了一系列 REST API 的 server。
这个 server 的功能其实很简单:监听一个端口,然后接收由 client 发送来的 command。翻译这些 command,把这些 command 转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些 command 后把执行结果返回给 appium server,appium server 再把执行结果返回给 client。(和 web 差不多)
这一好处就是可以把 server 放在任意机器上,哪怕是云服务器都可以;appium 和 webdriver 天生适合云测试。
client 其实就是发起 command 的设备,狭义的可以理解为代码
Session 是一个回话,所有的操作只有在 session start 才能进行。而要启动一个 session 需要传入 Desired Capabilities获取一个全局唯一的 session id,这个 id 指定了你的浏览器或者移动设备。
Desired Capabilities 狭义的理解其实就是配置信息。他是以 key-value 从对出现的。可以理解为 java 里的 map,python里的字典。
如下指定一个 Android4.2 的模拟器,测试 APP 为 selendroid-test-app.apk:
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['app'] = PATH('../../../apps/selendroid-test-app.apk')
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
而指定启动 ios 系统的 app 如下
desired_caps = {}
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '7.1'
desired_caps['deviceName'] = 'iPhone Simulator'
desired_caps['app'] = PATH('../../apps/UICatalog.app.zip')
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)