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 进行解析,并交由驱动相应的环境运行。

总结:

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机项目(21)——基于51单片机的音乐流水灯

1.功能描述 本次所做设计&#xff0c;有流水灯的功能&#xff0c;使用了16颗LED灯&#xff0c;同时还可以播放音乐。单片机存储了三首音乐&#xff0c;通过声音检测模块触发其进行切换。&#xff08;仿真图里面使用一个按键来代码声音检测模块&#xff09; 此外&#xff0c;还…

四十七、Redis分片集群

目录 一、分片集群结构 二、散列插槽 1、Redis如何判断某个key应该在哪个实例&#xff1f; 2、如何将同一类数据固定的保存在同一个Redis实例&#xff1f; 三、集群伸缩 四、故障转移 1、当集群中有一个master宕机时 &#xff08;1&#xff09;自动转移 &#xff08;2&…

ORACLE 如何单机转RAC

生产库停监听 [oracleprimary backup1]$ lsnrctl stop 生产库启停数据库 shutdown immediate Startup mount 生产库全库备份&#xff1a; rmanbackup.sh export ORACLE_BASE/oracle/app export ORACLE_HOME/oracle/app/product/11.2.0/db_1 export ORACLE_SIDtest …

Linux 常用解压命令tar和zip(详细篇)

# tar 入门 介绍 在Linux平台上,tar 命令是主要的归档实用程序。了解各种 tar 命令选项将帮助您掌握归档文件操作。tar 代表磁带存档。 语法 tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-C <目的目录>][-f <备份文件>][--delete][--totals][文件或目录...] 以前 un…

使用opencv的Laplacian算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题&#xff0c;也是经典的技术难题之一。如何快速、精确地提取图像边缘信息&#xff0c;一直是国内外的研究热点&#xff0c;同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…

Linux的文件系统 内核结构

Linux的文件系统 Q1&#xff1a;什么是文件系统&#xff1f; A&#xff1a;在学术的角度下&#xff0c;文件系统指“操作系统用于明确存储设备组织文件的方法”&#xff0c;是“文件管理系统”的简称&#xff0c;本质也是代码&#xff0c;一段程序 Q2&#xff1a;文件系统&…

Java带缓存的单向链表-线程安全

开发原因 ArrayList太重&#xff0c;线程还不安全 在一些队列处理的时候&#xff0c;ArrayList有点麻烦&#xff0c;还比较占内存&#xff0c;还没缓存&#xff0c;又得再加个缓存队列 所以就开发了这个 轻量级&#xff0c;线程安全&#xff0c;带缓存&#xff01;nice!! 源码…

Elasticsearch:相关性工作台 - BM25 及 ELSER 的相关性比较

我们知道 Elastics Learned Sparse EncoderR (ELSER) 可以被用来做语义搜索。它是一个 out-of-domain 的语义搜索模型。无需训练&#xff0c;我们就可以得到很好的相关性。有关 ELSER 的更多知识&#xff0c;请参考文章 “Elastic Learned Sparse Encoder 简介&#xff1a;Elas…

Mac下ERROR: Cannot connect to the Docker daemon

解决Mac下ERROR: Cannot connect to the Docker daemon at unix:///Users/qq/.orbstack/run/docker.sock. Is the docker daemon running? 在Mac系统的中, 如果实际已经安装docker并且已经启动了. 但执行 docker info 时 报错: ERROR: Cannot connect to the Docker daemon …

SpringMVC映射请求数据

1、获取超链接的参数和值 <a href"vote/vote01?namelove">获取超链接的参数</a> //获取超链接的参数RequestMapping(value "/vote01")public String vote01(RequestParam(value "name", requiredfalse) String name){System.out…

4-Docker命令之docker cp

1.docker cp介绍 docker cp命令是用于在本地宿主机文件系统与docker容器(状态:运行中/停止)之间复制文件或文件夹 2.docker cp用法 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH [root@centos79 ~]# docker …

如何使用PHP进行数据加密和解密?

在 PHP 中&#xff0c;你可以使用加密算法和相关的扩展库来进行数据加密和解密。以下是使用 PHP 进行数据加密和解密的基本示例&#xff1a; 使用 OpenSSL 扩展进行加密和解密&#xff1a; 加密&#xff1a; <?php $data "Hello, World!"; $key openssl_rando…

jenkins-Generic Webhook Trigger指定分支构建

文章目录 1 需求分析1.1 关键词 : 2、webhooks 是什么&#xff1f;3、配置步骤3.1 github 里需要的仓库配置&#xff1a;3.2 jenkins 的主要配置3.3 option filter配置用于匹配目标分支 实现指定分支构建 1 需求分析 一个项目一般会开多个分支进行开发&#xff0c;测试&#x…

网络入门---可变参数原理和日志模拟实现

目录标题 前言有关函数的几个性质介绍可变参数的用法介绍可变参数的一个注意事项可变参数的底层原理va_listva_endva_startva_arg_INTSIZEOF 可变参数的注意事项日志的实现日志的测试 前言 在上一篇文章中我们介绍了TCP协议有关的函数&#xff0c;大致就是服务端先通过listen函…

oracle 如何把数据库 date 日期格式 的数据 改成 2021-01-27

如果您要将日期"27-12月-29"更改为"2021-01-27"格式&#xff0c;您可以使用Oracle的日期格式化函数和字符串替换函数来实现。 以下是一个示例SQL语句&#xff0c;将日期"27-12月-29"更改为"2021-01-27"格式&#xff1a; sql UPDATE…

Springboot的火车票订票系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; Springboot的火车票订票系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#…

C_13练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上 以下叙述不正确的是(C)。A.C程序中,语句之间必须用分号分隔。 B.C程序中,多行语句可以写在一行上。 C.C程序中,可以不必包…

通过对象轮换实现 LRU 缓存结构

文章目录 通过两个对象轮换&#xff0c;按照是否访问实现内容长久保存rollup 的缓存实现 export default function (max) { //max 缓存容量var num, curr, prev;var limit max || 1;function keep(key, value) {if (num > limit) {prev curr; // 超过容量时当前对象变成缓…

什么是供应链安全及其工作原理?

6000公里长的丝绸之路将丝绸、谷物和其他货物从中国运送到帕尔米拉。尽管蒙古治下的和平保护丝绸之路免受海盗、强盗和内部盗窃的侵害&#xff0c;但商人仍然装备精良&#xff0c;并依赖于大型商队旅行和战略性放置的小型堡垒所提供的安全。 为什么供应链安全很重要&#xff1…

AE-制作科技感穿梭隧道

目录 1.新建合成命名为隧道 2.在合成中新建纯色层命名为五边形隧道