App主动化测试|Appium工做原理及Desired Capbilities设置装备摆设
Appium工做原理及Desired Capbilities设置装备摆设
Appium工做原理
脚本恳求——4723端口appium server——解析参数给PC端4724端口——发送给设备4724端口——通过设备4724端口发给bootstrap.jar——Bootstrap.jar把号令发给uiautomator
JsonWireProtocol:它是一种协议,遵照REST风气,以JSON办法停止传输,是一系列的键值对,遵照W3C WebDriver Spec设想风气;appium中的Json wire protocol继续自selenium的webdriver wire protocol,并停止了扩展,使得Json wire protocol可以掌握差别的挪动设备的行为。
bootstrap:bootstrap在appium中是以jar包的形式存在的,它的功用是做为一个socket办事,把Appium sever发送的恳求转化成uiautomator的号令来让uiautomator停止处置。 在创建session胜利之前,appium就已将bootstrap.jar放进手机中,并开启设备上的基于appiumbootstrap的socket办事,绑定本机和boostrap通信的端标语4724用于和Android设备通信,默认监听4724端口,期待client的毗连。
Uiautomator:UiAutomator是Google供给的用来做安卓主动化测试的一个Java库,基于Accessibility办事。功用很强,能够对第三方App停止测试。它的初始版本发布在Android4.3(APIlevel18)及以上的android系统版本。
Selendroid:Selendroid和UiAutomator类似,也是Google供给的一个安卓主动化测试软件,适用于Android系统的当地利用法式和挪动web的UI混合测试。它次要利用在Android4.2(APIlevel17)及以下的android系统版本。
Instruments:Instruments一个很乖巧的、强大的东西,是性能阐发、动态跟踪和阐发OSX以及iOS代码的测试东西,appiumios封拆了apple的Instruments框架,次要利用Instruments里的UIAutomation(Apple的主动化测试框架),然后在设备中注进进bootstrap.js停止行监听。
Desired Capabilities设置装备摆设
Desired Capabilities照顾了一些设置装备摆设信息。从素质上讲,它是key-value形式的对象。能够理解成是java里的map,python里的字典,ruby里的hash以及js里的json对象。现实上Desired Capabilities在传输时就是json对象。
DesiredCapabilities最重要的感化是告诉appium server本次测试的上下文。
好比:
展开全文
本次测试是启动阅读器仍是启动挪动设备?
是启动andorid仍是启动ios?
启动android时,app的package是什么?
启动android时,app的activity是什么?
appium server的那些疑问Desired Capabilities都必需赐与解答,不然appium server就无法完成挪动app或者是阅读器的启动。
Desired Capabilities常用键值对介绍:
automationName:利用哪种主动化引擎。appium(默认)仍是Selendroid。
platformName:平台的名称,iOS,Android,FirefoxOS
platformVersion:挪动设备的系统版本号,7.1,4.4
deviceName:设备名称,Android:可随意填写;IOS:instruments -s devices
udid:毗连的物理设备的独一设备标识adb devices可获取
app:当地绝对途径_或_长途属性一路利用)
browserName:测试的H5 web阅读器,假设是测app则漠视
newCommandTimeout:用于客户端在退出或者完毕session之前,Appium期待客户端发送一条新号令所破费的时间(秒为单元)
noReset:在当前session前不重置app形态,默认值为false
fullReset:(iOS)删除所有的模仿器文件夹。(Android)要肃清app里的数据,请将利用卸载才气到达重置利用的效果。在Android,在session完成之后也会将利用卸载掉。默认值为false
Desired Capabilities android特有键值对介绍:
appPackage:运行的Android利用的包名;假设是测试H5网页则漠视该属性
appActivity:Activity的名字是指从你的包中所要启动的Androidacticity。凡是需要再前面添加‘.’;假设是测试H5网页则漠视该属性
unicodeKeyboard:利用Unicode输进法。默认值为false
resetKeyboard:在设定了unicodeKeyboard关键字的Unicode测试完毕后,重置输进法到原有形态。假设零丁利用,将会被漠视。默认值为false
noSign:跳过查抄和对利用停止debug签名的步调。仅适用于UiAutomator,不适用于selendroid。默认值为false;(一般和app属性一路利用)
DesiredCapabilities利用实例:
from appium import webdriver
# 1、定义一个DesiredCapabilities设置装备摆设的字典
des = {
'automationName':'appium',
'platformName':'Android', # 平台的名称,iOS,Android,FirefoxOS
'platformVersion':'9.1.0', # 填写android虚拟机/实机的系统版本号
'deviceName':'huawei', # 填写安卓虚拟机/实机的设备名称
'appPackage':'com.sky.jisuanji', # 填写被测app包名
'appActivity':'.JisuanjizixieActivity', # 填写被测app的Activity进口
'udid':'HBSBB18821510293', # 填写通过号令行 adb devices 查看到的udid
'noReset':True, # 能否 不重置APP
'noSign':True, # 能否 不签名
'unicodeKeyboard':True, # 能否撑持中文输进
'resetKeyboard':True, # 能否撑持重置键盘
'newCommandTimeout': 30 # 30秒没发送新号令就断开毗连
# 2、把设置装备摆设的字典做为恳求参数发送给appium办事器
driver = webdriver.Remote(')
from appium import webdriver
# 1、定义一个DesiredCapabilities设置装备摆设的字典
des = {
'automationName':'appium',
'platformName':'Android', # 平台的名称,iOS,Android,FirefoxOS
'platformVersion':'9.1.0', # 填写android虚拟机/实机的系统版本号
'deviceName':'huawei', # 填写安卓虚拟机/实机的设备名称
'browserName': 'chrome', # 阅读器的设备名称
'udid':'HBSBB18821510293', # 填写通过号令行 adb devices 查看到的udid
'noReset':True, # 能否 不重置APP
'noSign':True, # 能否 不签名
'unicodeKeyboard':True, # 能否撑持中文输进
'resetKeyboard':True, # 能否撑持重置键盘
'newCommandTimeout': 30 # 30秒没发送新号令就断开毗连
# 2、把设置装备摆设的字典做为恳求参数发送给appium办事器
driver = webdriver.Remote(')