随着移动终端的普及,手机应用越来越多,也越来越重要。App的回归测试用例数量也越来越多,全量回归也越来越消耗时间。为了摆脱这些,需要引进一些自动化测试来协助我们。这里介绍一个手机自动化测试框架Appium。那究竟什么是Appium呢?
1、测试对象
Appium是一个开源工具,用于自动化iOS、Android设备和Windows桌面平台上的原生、移动Web和混合应用。
"原生应用"指那些用iOS、Android或者WindowsSDK编写的应用。
"移动web应用"是用移动端浏览器访问的应用(Appium支持iOS上的Safari、Chrome和Android上的内置浏览器)。
"混合应用"带有一个"webview"的包装器——用来和Web内容交互的原生控件。
重要的是:Appium是跨平台的:它允许你用同样的API对多平台写测试,做到在iOS、Android和Windows测试套件之间复用代码。
2、支持平台及语言
appium是跨平台的,支持OSX,Windows以及 Linux 系统。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性
appium支持多语言,采用C/S设计模式,只要满足client能够发送http请求给server即可
3、工作原理
APPIUM IOS端工作原理
下面我们通过一张图来看下IOS端APPIUM全过程工作原理:
APPIUM Android端工作原理
下面我们通过一张图来看下android端APPIUM全过程工作原理:
解释:
整个箭头指向为一个完成的指令循环
webdriver script需要自动化测试人员自己编写对应的测试脚本
建议大家去了解下JSON wire protocol、instruments、UiAutomator
4、安装工具
测试语言,如python
appium客户端
appium服务端
移动设备,若使用虚拟机则需进行安装
5、环境搭建
(一)安装Android SDK
1、Android SDK(Software Development Kit,软件开发 工具 包)提供了 Android API 库和开发工具构建,测试和调试应用程序,可以看做用于开发和运行Android应用的一个软件
2、提供小工具,比如adb、aapt、uiautomatorview
3、测试设备使用安卓模拟器,这一步决不能跳过
(二)安装 appium Server
1、appium官网:https://bitbucket.org/appium/appium.app/downloads/
2、下载appium安装包(AppiumForWindows.zip,appium.dmg)
3、安装,并配置appium环境变量
(三)安装 python-client
1、先安装编程语言,比如 python 语言
2、安装Appium-Client,python的话可使用pip安装:pip install Appium-Python-Client
6、应用及操作
调用appium过程
1、配置手机设备参数,告诉server端我想调起的是哪一台手机设备
2、抓取手机上应用的控件,指定对应的控件来进行操作
3、对抓取到的控件进行操作,比如点击、填写参数等
第一步,配置手机设备参数
Appium 的 Desired Capabilities 基本配置如下:
#Android environment
import unittest
from appium import webdriver
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')
desired_caps['appPackage'] = package
desired_caps['appActivity'] = activity
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
常见参数解释:
deviceName:指定启动设备,比如Android Emulator、iPhone Simulator等
automationName:指定自动化引擎,默认appium
platformName:指定移动平台,Android或者iOS
platformVersion:指定平台的系统版本。例如指定Android系统版本为4.2
appActivity:待测试app的Activity,注意,原生app的话要在activity前加个"."
appPackage:待测试app的包名(package)信息
第二步,抓取手机上应用的控件
通过Android SDK内置工具uiautomatorviewer.bat来查看手机应用的控件参数(该工具位于 /tools/bin/ 目录下)
1、id定位
使用方法:
driver.find_element_by_id('com.android.contacts:id/three')
2、name定位
使用方法:
el = self.driver.find_element_by_name('未接来电') el = self.driver.find_elements_by_name('未接来电')
3、class name 定位
使用方法:
els = self.driver.find_element_by_class_name('android.widget.ImageButton') els = self.driver.find_elements_by_class_name('android.widget.ImageButton')
4、Accessibility ID定位
使用方法:
el = self.driver.find_element_by_accessibility_id('三') el = self.driver.find_elements_by_accessibility_id('三')
5、android uiautomator定位
使用方法:
el=self.driver.find_element_by_android_uiautomator('new UiSelector().description(星形符号")')
els=self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(false)')
第三步,操作控件
1.scroll
scroll(self, origin_el, destination_el):
从元素origin_el滚动至元素destination_el
举例:driver.scroll(el1, el2)
用法:driver.scroll(el1,el2)
2.tap
tap(self, positions, duration=None):
模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
举例:driver.tap([(100, 20), (100, 60), (100, 100)], 500)
用法:driver.tap([(x,y),(x1,y1)],500)
3. swipe
swipe(self, start_x, start_y, end_x, end_y, duration=None):
从A点滑动至B点,滑动时间为毫秒
举例:driver.swipe(100, 100, 100, 400)
用法:driver.swipe(x1,y1,x2,y2,500)
4. keyevent
keyevent(self, keycode, metastate=None):
发送按键码(安卓仅有),按键码可以上网址中找到
用法:driver.keyevent('4')
5. press_keycode
press_keycode(self, keycode, metastate=None):
发送按键码(安卓仅有),按键码可以上网址中找到
用法:driver.press_ keycode('4')
6.text
text(self):
返回元素的文本值
用法:element.text
7.click
click(self):
点击元素
用法:element.click()
8.get_attribute
get_attribute(self, name):
获取某元素的相关值
用法:element.get_attribute("name")
9.size
size(self):
获取元素的大小(高和宽)
用法 driver.element.size
10. page_source
page_source(self):
获取当前页面的源
用法:driver.page_source
11.quit
quit(self):
退出脚本运行并关闭每个相关的窗口连接
举例:driver.quit()
执行结果判断
在用例执行完毕,需要判断是否通过时,需要和你预期的结果进行对比,一般可以选择断言查找某个标志位是否出现,或者某个元素的text值是否和预期相等,还可以截图后跟参照图片做对比等等。
总结:
1、 Appium跨平台,支持Android和IOS自动化测试。
2、Appium支持多语言,如 java 、Object-C、JavaScript、 Php 、Python、 Ruby 、C#、Clojure等等
3、支持原生应用,web应用和混合应用
4、仅仅支持UI测试
欢迎加入51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ 群: 755431660
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
500 Lines or Less
Amy Brown、Michael DiBernardo / 2016-6-28 / USD 35.00
This book provides you with the chance to study how 26 experienced programmers think when they are building something new. The programs you will read about in this book were all written from scratch t......一起来看看 《500 Lines or Less》 这本书的介绍吧!