🌈 赏金任务 - Appium的二次开发与Appium的运行原理?

赏金任务每周更新,请持续关注哦 :love_letter:

题目

  • 模拟面试场景,面试官提问以下问题,你如何回答。
  • Appium的二次开发与Appium的运行原理?

参与方式

  • 本帖下方回复你的答案即可

赏金

  • 100元京东购物卡

活动时间

  • 2023年3月27日 - 2023年4月2日

本周赏金任务汇总: 🌈 赏金任务发布 2023-03-27

本问题参与赏金活动,详情点击 :rainbow: 赏金活动上线啦 丨做赏金任务挑战千元奖金 查看活动介绍

1、Appium概述
Appium是一个开源自动化测试框架,使用WebDriver协议驱动IOS/Android/Windows应用程序,可用于原生、混合、移动Web应用程序的测试

2、Appium优势:
①可跨平台,同时支持Android、IOS
②支持多种语言:Java/Python/PHP/Ruby等等
③配置环境简易
④与Selenium有共通之处,便于快速上手

3、Appium架构原理
Appium是在手机操作系统自带的测试框架基础之上实现的, 对原有的自动化测试框架进行封装改良。
Android和IOS系统上使用的工具分别如下:
Android(>4.3):UIAutomator,Android4.3之后系统自带的UI自动化测试工具
Android(≤4.3):Selendroid,基于Android Instrumentation框架实现的自动化测试工具
IOS: UIAutomation(Instruments框架里面的一个模板),IOS系统自带的UI自动化测试工具,相当于IOS封装了UIAutomation

4、三部分组成:
1)Appium服务器
Appium服务器是Appium框架的核心,是基于Node.js实现的HTTP服务器,Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(IOS手机为bootstrap.js)执行,然后将命令的执行结果通过HTTP应答反馈给Appium客户端

2)Bootstrap.jar
Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时, Appium服务器会与Bootstrap.jar建立TCP通信,并把命令发送给Bootstrap.jar,由Bootstrap.jar负责运行测试命令

3)Appium客户端
主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。
现有的客户端Library有多种语言的实现,包括Ruby、Python、Java、JavaScript(Node.js)、 Object C、PHP、C#,而Appium的测试是在这些Library的基础之上进行开发的

5、运行原理
电脑端运行自动化测试脚本,调用的是webdriver的接口,appium server接收到电脑端发送过来的命令后会将这些命令转换为UIautomator可识别的命令,然后由UIautomator在移动设备上执行自动化测试。
Appium架构是由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务端通过JSON Wire Protocol进行通信


Appium是一个跨平台的开源自动化测试工具,用于测试原生和混合应用程序,支持多种编程语言和多个移动操作系统。其原理是通过与设备连接的WebDriver协议,将测试命令转换为相应的移动应用程序操作,再通过UIAutomator或XCUITest等框架来执行测试操作,最后将执行结果返回给测试脚本。

我在之前的项目中使用过Appium来进行自动化测试,其中也做过二次开发。在某个项目中,我们使用了Appium进行移动端的UI自动化测试,在测试过程中,发现有一个无法触发点击事件的控件,于是我们通过对Appium源码的分析,对Tap操作方法进行了修改,成功解决了该问题。

我认为,对于自动化测试开发来说,理解Appium的原理是非常重要的。这可以帮助我更好地理解如何在不同平台和不同设备上测试移动应用,以及如何解决一些特殊情况下会出现的问题。此外,了解Appium的原理也能帮助我写出更优秀的自动化测试框架和平台,提升自动化测试工作的效率和质量。

在设计自动化的框架和平台时,我们也遇到过一些问题。比如,在集成CI系统时,由于CI服务器不能连接到模拟器或真机,我们需要使用Appium 的远程测试功能,将测试命令发送到远程设备上,然后再将测试结果返回到CI服务器。为了解决这个问题,我们编写了一些脚本,用于控制不同的设备,并进行一些数据处理等工作,最终实现了远程自动化测试。

在我之前的项目中,自动化测试已经实现了覆盖率达到了90%以上,每次发布前都会进行自动化UI测试,发现和解决了很多问题,从而避免了线上问题的出现,提高了产品质量。而在解决冲突方面,我们也做了一些工作。比如,在进行自动化UI测试时,需要占用大量的设备,而这些设备可能被其他团队或项目所共享。为了避免冲突,我们与其他团队或项目进行了协调,通过共享设备管理系统来保证测试的顺利进行。

总之,我认为,我对于Appium的二次开发和原理有着一定的了解,并且在之前的项目中也有着丰富的使用经验,我能够充分发挥我的测试专业度和平台开发能力,解决自动化测试中出现的问题,提高自动化测试的效率和质量。

Appium的二次开发与Appium的运行原理有一定的联系和区别。

Appium的运行原理是:
Appium框架在运行自动化测试时的工作流程和步骤,包括启动Appium服务器、连接移动设备、配置测试环境、编写测试脚本、运行测试脚本、分析测试结果等。这些步骤是固定的,无论是使用原始的Appium框架进行自动化测试,还是进行二次开发,都需要遵循这些基本原理。

而Appium的二次开发是:
Appium框架的基础上,通过自定义代码来扩展或修改Appium的功能。这包括编写自定义驱动程序、修改API、添加新功能等。通过二次开发,可以根据自己的需求来定制Appium的功能,以满足特定的自动化测试需求。

因此,Appium的二次开发和运行原理是两个不同的方面。二次开发是在Appium运行原理的基础上进行的,通过修改或扩展Appium的源代码,来定制Appium的功能。但是,无论是使用原始的Appium框架还是进行二次开发,都需要了解Appium的运行原理,以便正确地配置测试环境、编写测试脚本和分析测试结果等。

Appium的运行原理:

Appium的运行原理与其他基于WebDriver协议的测试框架类似。Appium基于WebDriver协议,但是它的特殊之处在于它可以处理移动设备的特殊功能和行为,例如:触摸屏幕、旋转设备、调整屏幕亮度等。

Appium主要使用的是WebDriver的JSON Wire Protocol来驱动:Apple系统的UIAutomation库、Android系统的UIAutomator框架。

主要通过客户端/服务器模式工作,将测试代码发送到Appium Server,由Appium服务端将测试命令转换为设备或模拟器上对应的原生自动化API,并执行相应的操作,最终返回结果给测试代码。

简单来说Appium的运行原理是将WebDriver协议转换为移动设备原生自动化指令,然后将其发送到移动设备执行,最后将结果翻译为可读的测试结果返回给客户端。

Appium运行原理步骤如下:

  1. Appium启动一个服务器,监听来自客户端的测试指令。

  2. 客户端发送测试指令到Appium服务器,服务器将其翻译为WebDriver协议指令。

  3. 服务器将WebDriver协议指令发送到移动设备(或模拟器)的自动化引擎,如UIAutomator或XCUITest。

  4. 自动化引擎接收到指令后,将其翻译为原生自动化指令,并将其发送到移动设备的操作系统。

  5. 移动设备的操作系统接收到自动化指令后,执行相应的操作并返回结果。

  6. 自动化引擎将结果翻译为WebDriver协议响应,并将其发送回Appium服务器。

  7. Appium服务器将WebDriver协议响应翻译为可读的测试结果,并将其发送回客户端。

Appium的二次开发:
通过扩展或修改Appium框架的核心组件,来实现自定义功能或者对已有功能进行优化和改进。主要涉及到Appium的API、驱动程序和插件等组件。
主要是基于其插件化的架构。插件是Appium中的一个重要概念,是用于扩展和增强Appium功能的一种机制。通过插件,可以在Appium的核心代码中添加自定义功能,实现自定义的操作和验证方式,提高自动化测试的效率和可靠性。插件可以基于Appium的API进行开发,也可以通过Appium提供的开放接口进行开发。

Appium的二次开发可通过以下步骤实现:

  1. 定义插件:
    定义一个新的插件,该插件可以是一个新的操作、验证方式或其他功能,也可以是对现有插件的扩展和修改。

  2. 开发插件:
    根据定义的插件,开发相应的代码逻辑和实现,确保插件功能的正确性和可靠性。

  3. 注册插件:
    将插件注册到Appium的插件管理器中,确保Appium可以识别和加载该插件。

  4. 使用插件:
    在Appium的测试脚本中使用该插件,实现自定义功能的操作和验证。 通过插件化的架构,Appium的二次开发可以实现对核心功能的扩展和增强,同时保持Appium的稳定性和可维护性。插件可以根据需要进行开发和升级,可以为不同的测试场景提供不同的功能和特性,实现高效、灵活、可扩展的自动化测试。

二次开发Appium需要对Node.js和Appium框架有深入的了解和经验,对移动应用开发和自动化测试也需要一定的了解和经验。在进行二次开发之前,最好先尝试使用Appium框架进行自动化测试,并学习Appium的工作原理和基本操作。同时,建议使用版本控制系统(例如Git)来管理Appium的源代码和二次开发的代码。

Appium 是一个用于移动端自动化测试的工具,支持 Android 和 iOS 平台,并且具有很好的平台兼容性。用户可以使用 Appium 进行自动化测试,提高测试效率和质量。在 Appium 的基础上进行二次开发,可以针对具体需求进行定制化开发,深入了解 Appium 的运行原理,则可以更好地优化自动化测试脚本,提高测试效率和可靠性。

Appium 的运行原理可以简单概括为:

Appium是一个开源的测试自动化框架,可用于原生、混合和移动web应用程序。它使用Webdriver协议驱动IOS、Android和Windows应用程序。

(1)Appium的优势

可以跨平台同时支持Android和IOS
可以支持多种语言,Java、Python、php、ruby等等

(2)Appium框架组成

Appium由两部分组成,Appiumclient、Appium sever,如果说整个自动化测试环境的话,还有移动设备端三个部分完成。

Appium Client

一般来说就是运行代码的部分,即我们用Python语言编写的代码(或其他支持的语言)。Appium提供的Appium client API是Appium通过拓展selenium的Webdriver协议而来的,我们编写的代码只要实现Webdriver标准协议即可。

Appium Sever

Appium Sever功能是监听接口,接收client端发送的command,然后将command转化为移动端能够识别的command,然后发送给移动设备进行操作,在等移动设备返回操作结果,将操作结果发送给client端。Appium Sever可以放在client端,也可以放在云端。Appium Sever默认的端口号是4723,用于Appium Sever监听client端的发送请求。

移动端:

Appium是在手机操作系统自带的测试框架基础上实现的,Android和IOS的系统上使用的工具不同,分别如下:

  • Android: 4.3版本以上采用的是UIAutomator,系统自带的UI自动化测试工具。4.2及以下采用的是基于Android lnstrumentation框架实现的自动化测试工具。
  • IOS:采用的是IOS系统自带的UI自动化测试工具UIAutomation。

Appium运行原理

  • client端也就是我们 test script是我们的webdriver测试脚本。
  • 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
  • appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。
  • 最后Bootstrap将执行的结果返回给appium server。
  • appium server再将结果返回给 appium client。
    0dc184c17bc9e5dc310ca4b5ddf665e

Appium二次开发和Appium运行原理的关系

Appium 的二次开发和运行原理是紧密相连的。深入了解 Appium 的运行原理,可以帮助我们更好地理解它的工作原理和实现细节,从而更好地开发和优化自动化测试脚本。另一方面,进行 Appium 的二次开发则需要对 Appium 的运行原理有深入的了解,这样才能充分利用 Appium 提供的 API,实现针对特定需求的自定义功能。

例如,在 Appium 二次开发中,如果我们想要添加一个针对移动端应用中某个特定界面的某个特定元素的定制操作,我们就需要深入了解 Appium 的定位机制,以便更好地实现我们的功能。如果我们想要对 Appium 进行定制化开发,并且能够更好地理解 Appium 实现定位机制的原理,我们可以更好地利用 Appium 提供的各种功能和 API,实现我们的应用场景。

此外,通过深入了解 Appium 的运行原理和实现细节,我们还可以更好地优化自动化测试脚本。在编写自动化测试脚本时,如果我们能深入了解 Appium 的 UI 定位机

Appium是一种流行的移动应用程序自动化测试框架,它允许开发人员使用各种编程语言编写自动化测试脚本,以测试iOS和Android应用程序。Appium的运行原理基于客户端/服务器模型,其中Appium服务器充当中间件,负责管理与设备或模拟器的通信,并执行测试脚本。

Appium的二次开发是指在Appium的基础上进行定制开发以满足特定需求的过程。可以通过以下几种方式进行Appium的二次开发:

  1. 自定义驱动程序:可以通过编写自定义驱动程序来扩展Appium的功能,以支持不同的测试需求。
  2. 定制Appium服务器:可以对Appium服务器进行修改和扩展,以满足特定的测试需求。
  3. 使用Appium API:可以使用Appium API与Appium服务器进行交互,以控制测试流程并获取测试结果。

在运行时,Appium服务器会监听来自客户端的命令,并将它们翻译成设备或模拟器可以理解的操作,例如启动应用程序、点击屏幕、滚动等。这些操作通过设备上的UIAutomator、XCUITest、Selendroid等测试框架执行,然后将结果返回给Appium服务器,再由Appium服务器将结果返回给客户端。

总的来说,Appium的运行原理是基于客户端/服务器模型,通过解析客户端发送的命令并转换为设备或模拟器可以理解的操作,执行自动化测试脚本,并返回测试结果。Appium的二次开发可以扩展Appium的功能,以满足特定的测试需求。