Appium 工作原理及 Desired Capabilities

Appium 工作原理及 Desired Capabilities,第1张

概述一、Appium工作原理 脚本请求——>4723端口appiumserver——>解析参数给PC端4724端口——>发送给设备4724端口——>通过设备4724端口发给bootstrap.jar——>Bootstrap.jar把命令发给uiautomator JsonWireProtocol:它是一种协议,遵循REST风格,以JSON方法进行传输

一、Appium工作原理

 

脚本请求 ——> 4723端口appium server ——> 解析参数给PC端4724端口 ——> 发送给设备4724端口 ——> 通过设备4724端口发给bootstrap.jar ——> bootstrap.jar把命令发给uiautomator

 

Json Wire Protocol:

它是一种协议,遵循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放入手机中,并开启设备上的基于appium bootstrap的socket服务,绑定本机和boostrap通信的端口号4724用于和AndroID设备通讯,默认监听4724端口,等待clIEnt的连接。

Uiautomator:

Uiautomator是Google提供的用来做安卓自动化测试的一个Java库,基于Accessibility服务。功能很强,可以对第三方App进行测试。它的初始版本发布在AndroID 4.3 (API level 18)及以上的androID系统版本

SelendroID:

SelendroID和Uiautomator类似,也是Google提供的一个安卓自动化测试软件,适用于AndroID系统的本地应用程序和移动web的UI混合测试。它主要应用在 AndroID 4.2 (API level 17) 及以下的androID系统版本

Instruments:

Instruments 一个很灵活的、强大的工具,是性能分析、动态跟踪 和分析OS X以及iOS代码的测试工具,appium ios封装了apple的 Instruments框架,主要使用Instruments里的UI automation(Apple的自动化测试框架),然后在设备中注⼊入bootstrap.Js进⾏行监听。

二、Desired CapabilitIEs

Desired CapabilitIEs携带了一些配置信息。从本质上讲,它是key-value形式的对象。可以理解成是java里的map,python里的字典,ruby里的hash以及Js里的Json对象。实际上Desired CapabilitIEs在传输时就是Json对象

Desired CapabilitIEs常用键值对介绍:

automationname:使用哪种自动化引擎。appium(默认)还是SelendroID。

platformname: 平台的名称,iOS, AndroID, or firefoxOS

platformVersion:移动设备的系统版本号,7.1, 4.4

devicename: 设备名称,AndroID:可随意填写; IOS:instruments -s devices

udID:连接的物理设备的唯一设备标识 adb devices 可获取

app:本地绝对路径_或_远程 http URL 所指向的一个安装包(.ipa,.apk,或 .zip文件)。Appium 将其安装到合适的设备上。如果指定了 appPackage 和

appActivity 参数,AndroID 则不需要此参数了。该参数也与 browsername 不兼容。

browsername:测试的web浏览器,如果是测app则忽略

newCommandTimeout :用于客户端在退出或者结束 session 之前,Appium 等待客户端发送一条新命令所花费的时间(秒为单位)

noreset:在当前session前不重置app状态,默认值为 false

fullreset:(iOS)删除所有的模拟器文件夹。(AndroID) 要清除 app 里的数据,请将应用卸载才能达到重置应用的效果。在 AndroID, 在 session 完成之后也会将应用卸载掉。默认值为 false

Desired CapabilitIEs androID特有键值对介绍:

appPackage:运行的 AndroID 应用的包名appActivity:Activity 的名字是指从你的包中所要启动的 AndroID acticity。通常需要再前面添加‘.’

unicodeKeyboard:使用 Unicode 输入法。 默认值为 false

resetKeyboard:在设定了 unicodeKeyboard 关键字的 Unicode 测试结束后,重置输入法到原有状态。如果单独使用,将会被忽略。默认值为 false

noSign:跳过检查和对应用进行 deBUG 签名的步骤。仅适用于 Uiautomator,不适用于 selendroID。 默认值为 false

最全:
https://github.com/appium/appium/blob/master/docs/cn/writing-running-
appium/caps.md

 

目前调试测试脚本(测试网页):

import timefrom appium import webdriverdes = {    "platformname": "AndroID",    "platformVersion": "8.0",    "devicename": "Samsung galaxy S8",    "udID":"192.168.165.101:5555",    'browsername': 'Chrome',    'noreset': True,    'unicodeKeyboard': True,    'resetKeyboard': True,    'ChromedriverExecutable':'C:/Program files/Appium/resources/app/node_modules/appium/node_modules/appium-Chromedriver/Chromedriver/win/chromedriver.exe'}driver = webdriver.Remote('http://localhost:4723/wd/hub',des)time.sleep(1)# driver.get('https://www.baIDu.com')driver.get('https://www.qq.com')

  测试APP:

import timefrom appium import webdriverdes = {    "platformname": "AndroID",    "platformVersion": "8.0",    "devicename": "Samsung galaxy S8",    "udID":"192.168.165.101:5555",    "appPackage": "com.androID.calculator2",    "appActivity": ".Calculator",    'noreset': True,    'unicodeKeyboard': True,    'resetKeyboard': True}driver = webdriver.Remote('http://localhost:4723/wd/hub',des)

  

 

总结

以上是内存溢出为你收集整理的Appium 工作原理及 Desired Capabilities全部内容,希望文章能够帮你解决Appium 工作原理及 Desired Capabilities所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存