一、Appium 简介
- Appium是一个开源的移动端自动化测试框架,旨在简化移动应用程序的自动化测试。
- 它具有跨平台的特性,能够测试原生、混合以及移动端的Web应用。
- Appium支持iOS、Android以及Firefox OS等多种移动操作系统。
- 作为跨平台工具,Appium能够在OSX、Windows和Linux等桌面系统上运行。
- 它支持多种编程语言,包括Ruby、Python、Java、JavaScript、Objective C、PHP、C#以及RobotFramework,使得开发者能够选择最熟悉的语言进行自动化测试。
二、Appium 原理
Appium的核心是一个暴露了一系列REST API的服务器。其工作原理如下:
- Appium服务器监听一个指定的端口,等待客户端发送命令。
- 客户端发送命令到Appium服务器,服务器将命令翻译并转换成移动设备可理解的形式。
- 移动设备执行命令,并将执行结果返回给Appium服务器。
- Appium服务器将执行结果返回给客户端。
这种基于REST API的设计使得Appium能够实现跨平台自动化测试,并且方便与云测试平台集成,提高了测试的灵活性和效率。
三、名词解释
- 客户端(client):发起命令的设备,可以是代码或者测试脚本。
- 会话(Session):是一个测试过程的回话,在会话开始后才能执行各种操作。
- 期望的配置信息(Desired Capabilities):是启动会话时必须提供的配置信息,通过键值对的形式告诉Appium服务器如何处理测试任务。
下面是一些常用的期望的配置信息示例:
desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '4.2'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)
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)
四、期望的配置信息(Desired Capabilities)参数详解
期望的配置信息(Desired Capabilities)用于告诉Appium服务器如何处理测试任务,包括指定测试平台、设备信息以及应用程序的相关信息等。常用参数如下:
- automationName:指定使用的自动化引擎,如Appium(默认)或Selendroid。
- platformName:指定测试的移动平台,如iOS、Android或FirefoxOS。
- deviceName:指定测试的设备名称,可以是真机或模拟器。
- app:指定测试的应用程序路径,必须是绝对路径。
- browserName:指定移动浏览器的名称,如iOS的Safari或Android的Chrome。
- udid:指定物理设备的ID,用于真机测试。
- appPackage:指定待测试应用程序的Java包名,仅适用于Android。
- appActivity:指定待测试应用程序的Activity名称,仅适用于Android。
对于一些应用中文输入可能出现问题的情况,可以增加如下设置:
desired_caps["unicodeKeyboard"] = "True" desired_caps["resetKeyboard"] = "True"
更多详细参数请参考官方文档。