一、Appium简介

Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。

二、 环境搭建

安卓

所需软件/工具

jdk1.8.0_101

node-v7.10.0-x64

pycharm-professional-2017.1.4

python_3.6.0

appium-installer

android-sdk-windows

Appium Client

环境搭建网址参考:

ios

所需软件/工具

Xcode

jdk1.8.0

appium 3.6

appium-doctor

Homebrew(用于安装node)

node

pycharm-professiona2017.1.4

python_3.6.0

libimobiledevice

ios-deploy

WebDriverAgent

macaca-cli

环境搭建网址参考:

http://www.7forz.com/2973/

三、基础文件配置

设置基础文件,配置自动化测试的测试机信息

安卓设备配置信息

desired_caps['newCommandTimeout'] = 3600 # 1 hour
desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True"
desired_caps['device'] = 'android'
desired_caps['platformName'] = 'Android' #平台
desired_caps['version'] = '5.1.1' #安卓系统版本desired_caps['deviceName'] = 'vivo X7'# 这是测试机的型号,可以查看手机的关于本机选项获得
desired_caps['noReset'] = True #不需要重新安装,调试用
desired_caps['app'] = android_pkg #被测试的App在电脑上的位置

其中unicodeKeyboard、resetKeyboard为是否切换为Appium输入法

Ios设备配置信息

desired_caps['automationName'] = 'XCUITest' # Xcode8.2以上无UIAutomation,需使用XCUITest
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '10.0'
desired_caps['deviceName'] = 'iPhone 7'
desired_caps['udid'] = '8de***********' #设备编号,真机运行必须填写udid
desired_caps['bundleId'] = 'com.*********' #被测应用包名
desired_caps['newCommandTimeout'] = 3600 # 1 hour
desired_caps['xcodeOrgId'] = '*******' #开发者账号
desired_caps['xcodeSigningId'] = 'iPhone Developer'
desired_caps['app'] = ios_pkg # 被测试的App在电脑上的位置

后期为便于安卓与ios共用一套代码,已减少代码重复量 在编写代码时可对平台进行判断

sysstr = platform.system()
isAndroid = True if sysstr == "Windows" else False

判断平台可用if else判断

如代码相同,可正常编写,当因平台差异或其他原因导致代码不同时可用

举个例子,相同模块Android的点击按钮,添加了id 而ios无id,但其他脚本都相同,可在两平台不同处,对判断platform区分,安卓根据id进行查找,而ios可根据name进行查找

if isAndroid:
 self.driver.find_element_by_id("ll_add_contact").click() # 选择联系人按钮else:
 self.driver.find_element_by_name("选择联系人").click()

四、自动启动app

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

其中http://127.0.0.1:4723/wd/hub为appium中配置




element ui 选择组件 element 选项卡_element ui 选项卡切换


五、元素查找及断言

1、在UI自动化中,元素查找的方法较多,通常可使用 id,name,xpath等

举个例子:

使用id的点击事件

self.driver.find_element_by_id("tv_*****").click()

使用name的点击事件

self.driver.find_element_by_name("发现").click()

使用xpath的点击事件

self.driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[3]/android.widget.TextView[1]").click()

其中的find_element也可使用find_elements,find_element为定位单个元素使用,find_elements为定位列表元素(多个元素)使用

2、断言使用方式也较多,在这里不过多介绍,详细请参考



element ui 选择组件 element 选项卡_android_02


举个例子:

判断跳转页面中的某个id对应的文本是否为“朋友圈”

self.assertEqual(self.driver.find_element_by_id("tv_circleoffriends").text,"朋友圈",msg="页面切换成功") #断言是否相等