Appium知多少

Appium我想大家都不陌生,这是主流的移动自动化工具,但你对它真的了解么?为什么很多同学搭建环境时碰到各种问题也而不知该如何解决。

appium为什么英语词典查不到中文含义?
appium是一个合成词,分别取自“application”的前三个字母和“Selenium”的后三个字母。application为“应用”,我们一般把移动平台上的应用简称为App,而Selenium是当前主流的Web UI自动化测试工具;而appium与Selenium之间有着许多联系。appium是寓意为:移动端的Selenium自动化测试工具。因为appium是合成词,所以未找到标准读音,个人更倾向于发音:[ æpi'ʌm ]

appium为什么支持iOS和Android两大平台?
我们知道iOS和Android是两个完全不同的系统。iOS属于类Unix的商业操作系统,而Android是一种基于Linux的自由及开放源代码的操作系统;iOS的开发主要使用的objective-c和swift语言,而Android开发主要使用的Java和Kotlin。为什么appium 可以做到对这两大平台的支持?

XCUITest
XCUITest苹果公司在iOS 9.3版推出的自动化框架。从iOS 10及更高版本开始,它是唯一受支持的自动化框架。

Appium 1.6.0使用苹果新的XCUITest框架,它支持iOS 10/Xcode 8。Appium内部使用Facebook的WebDriverAgent项目来支持XCUITest。 对于较旧的iOS版本(<= 9.3),Appium使用Apple的UIAutomation库。典型用法是在所需功能中传递以下内容:

automationName:XCUITest

Facebook WebDriverAgent是iOS的WebDriver服务器实现。它用于远程控制连接的设备或模拟器,并允许启动应用程序,执行命令(如点击和滚动),并终止应用程序。

UIAutomator 2
UIAutomator 2是基于Android工具的自动化框架,允许用户构建和运行UI测试。Appium使用Google的UIAutomator在真实设备和模拟器上执行命令。UIAutomator是Google在UI级别为本地应用程序自动化测试框架。典型的用法是在所需的功能中传递以下内容:

automationName:uiautomator2

在Appium 1.6版本中,Appium为UiAutomator 2提供了支持。Appium使用appium-android-bootstrap模块与UIAutomator进行交互。它允许将命令发送到设备,然后使用Android的UIAutomator测试框架在真实设备上执行命令。

当Appium客户端请求创建新的AndroidDriver会话时,客户端将所需的功能传递给Appium节点服务器。 UIAutomator2驱动程序模块创建会话。然后,在连接的Android设备上安装UIAutomator2服务器APK,启动Netty服务器并启动会话。Netty服务器会话启动后,UIAutomator2服务器继续在设备上侦听请求并作出响应。

appium 为什么即支持Web应用,又支持原生应用,还支持混合应用?

移动应用的类型主要分以下几类:

Native App:原生应用

Mobile Web app:移动Web应用

Hybrid App:混合应用

如果不知道什么是原生应用,请打开你的手机计算器。appium将操作解析为UIAutomator测试库的方法并执行(仅Android)。

如果不知道什么是web应用,请打开你的手机浏览器。appium将操作交给chromedriver执行。熟悉Selenium的同学知道,它是Chrome浏览器驱动,因为appium也遵循 webdriver 规范,在appium处理之后把请求转发给chromedriver执行(仅Android)。

如果不知道什么是混合应用,请打开支付宝,关掉网络在“我的”和“口碑”页面切换。在它下面运行测试会兼具用到UIAutomator和Chromedriver 来解析和运行脚本。

appium 为什么支持多语言?

appium是针对每一种语言都开发了相应的client库,方便不同的语言用户的使用。这些都不同语言编写的脚本的执行最终会由appium Server/Desktop 进行解析,并交由驱动相应的环境运行。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

 

相关推荐

  1. tomcat 多少

    2023-12-16 05:08:05       18 阅读
  2. grep命令多少

    2023-12-16 05:08:05       6 阅读
  3. 【Docker】Docker的常用命令多少

    2023-12-16 05:08:05       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 05:08:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 05:08:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 05:08:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 05:08:05       20 阅读

热门阅读

  1. uniapp腾讯地图路线规划

    2023-12-16 05:08:05       41 阅读
  2. 什么是Aop?

    2023-12-16 05:08:05       37 阅读
  3. 前端开发环境配置

    2023-12-16 05:08:05       41 阅读
  4. Linux常用命令

    2023-12-16 05:08:05       40 阅读
  5. Vue 3与Composition API:入门指南

    2023-12-16 05:08:05       36 阅读
  6. React-Hooks

    2023-12-16 05:08:05       34 阅读
  7. react中的setState是同步还是异步

    2023-12-16 05:08:05       35 阅读
  8. ESP32网络开发实例-mDNS与域名解析

    2023-12-16 05:08:05       34 阅读
  9. vue2.0使用vue-pdf(简单版本)

    2023-12-16 05:08:05       35 阅读
  10. 通过对象轮换实现 LRU 缓存结构

    2023-12-16 05:08:05       38 阅读