• 0
  • 0
分享
  • App自动化之Appium工作原理!——软件测试圈
  • 小丸子🍡 2024-05-28 16:43:56 字数 2284 阅读 945 收藏 0

  Appium框架介绍

  Appium是什么?

  首先,Appium 是一款开源框架,生态丰富,社区强大,一直在被开发者维护;

  并且是一个灵活的跨平台的测试自动化工具,可以在iOS、Android 或 Windows、Mac 设备上进行移动应用的自动化测试运行,并且能够使用相同的 API 编写多个平台的测试脚本;

  Appium与Selenium类似,是一个跨语言的自动化框架,并且可以和任何测试框架相结合;可以使用不同的编程语言编写测试脚本,包括 Java、JavaScript、PHP、Ruby、Python 和 C#。

  Appium通信-各个端介绍

  Client端发送自动化指令给 Appium Server ,Appium Server 接收到 Client端发送的指令后,进行转换,转换为移动端能够识别的指令,然后发送给移动端设备,移动端设备根据指令进行操作。

  如下图为自动化通信交互:

1-1.jpg

  Client端

  Client端 就是运行编写的自动化项目代码,使用Appium-client提供的API来进行用例的编写。

  其中,声明DesiredCapabilities对象,指定被测设备及app的相关信息;DesiredCapabilities对象中指定automationName的value值为UiAutomator2,这样才可以通过 Appium Server 去创建一个Android的session会话

  自动化项目代码中首先请求创建一个 AndroidDriver 实例,需要传入Appium Server的 URL 及 DesiredCapabilities对象

  Appium Server

  Appium Server启动时默认的占用的端口号为4723,主要作用就是进行API请求的监听。

  接收Client端发送的命令,并进行转换,转为移动端可识别的指令,并发送给移动端设备进行操作,再等待移动设备返回操作结果。

  Appium Server端接收到移动设备返回的结果再将操作结果发送给Client端。

  其中,Appium server可以和自动化项目代码同时放在Client端,也可以放在云端。

  如果与代码同时放在Client端上,Appium Server的IP地址为127.0.0.1;

  如果放在云端,Appium Server的IP地址为云端服务器的IP地址。

  Android移动端

  Appium 基于JSON Wire协议,通过调用UIAutomatior命令,实现APP的自动化测试。

  其中,UIAutomator测试框架是Android SDK自带的APP UI自动化测试Java库。

  总结

  客户端发送请求给Appium Server,Appium Server转换请求给移动端,在移动端操作完成后返回响应内容给Appium Server,Appium Server再把结果返回给客户端。

  Appium通信-端与端之间

1-2.jpg

  Client端与Appium Server

  客户端请求创建driver会话,将声明的capabilities启动参数通过端口4723传递给Appium Server;

  Appium Server基于capabilities中的automationName属性,重定向到相应的驱动模块。

  如果automationName是uiautomator2,Appium Server重定向到UIAutomator2 Driver,此时创建session会话并生成对应的sessionID。

  Appium Server与Android移动端

  APK安装

  ·appium settings

  为了在Android手机上运行应用程序,Appium 需要有一定的权限来控制系统设置。

  Appium安装了一个小应用程序io.appium.settings,安装成功后,Appium Settings在后台运行。

  · uiautomator2 server

  由于使用的是UIAutomator2 Driver,所以要在Android手机上安装Driver相关的apk,即

  appium-uiautomator2-server-xx.apk。

  安装完成后,Appium Server的8200端口 和 Android设备端的6790端口建立映射,通过该映射的链路进行通讯。

  总结

1-3.jpg

  1. Client端发送操作指令给Appium Server

  2. Appium Server通过appium-uiautomator2-driver发送JWP协议的请求到Android的appium-uiautomator2-server

  3. appium-uiautomator2-server调用Android系统的 Google UIAutomator2 去以执行自动化具体的操作

  4. 操作完成后返回结果对象AppiumResponse给appium-uiautomator2-driver,AppiumServer再返回给Client端,Client端得到最终执行操作的结果

  注意

  · appium-uiautomator2的driver和server之间的通信的协议是JWP协议

  · 创建AndroidDriver遵循的是W3C协议进行创建


作者:程序员小濠    

来源:http://www.51testing.com/html/11/n-7798011.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 现在PC端的产品越来越多,产品发展也是越来越成熟,我们测试部门关于这些产品的验收也是有一套对应的标准的,按道理来说,这种通用规则是值得买一个开发遵守的,这样更加符合产品风格一致化和易用性。详细的方向和规则如下面阐述的:【易用性】1、删除有二次弹框,二次弹框的引导内容正确;2、新功能用户指导内容准确及时;3、按钮的位置(取消在左,确定在右)间距和字符大小合适;4、图标的使用,问号代表功能说明,感叹号代表错误警告,箭头代表展开和收起;5、导航栏滑点滑动,页面内容可以跟随;6、页面内容超长,toast内容始终显示在屏幕中间;7、页面刷新频率恰好,不会太频繁;8、进度颜色标识区分明显,正常进度绿色,超...
            1 1 9573
            分享
          •   “如果这个账号审批不下来,我们的测试工作就没办法按期进行”、“第三方的接口提供时间还未确定,如果在某月某号之前不能提供,我们的联调工作可能就会延期”......  只要你参与或是管理过项目,对这些问题一定不会陌生,这就是项目管理过程中的风险点,如果没有被合理识别和管控,项目管理者就会被这些事项推着走,沦为救火队员。那么想要化被动为主动,就必须要对项目的风险进行有效的管理。  风险管理的核心概念  在讲风险管理之前,我们需要先来了解风险相关的一些核心概念。  什么是风险  什么是风险,就是那些让你提心吊胆的事情,为什么会提醒吊胆,因为这件事情还没有发生,但是可能会发生,发生之后还会对项目产生...
            0 0 198
            分享
          • 又到了一年中的招聘旺季的时候,想必很多人都萌动了跳槽的心,笔者也抱着同样的想法换了个公司,从10底开始面,面到1月初,面了有快二十五家公司。我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪个知识点今天又问了等等。不会那就多做准备,往往机会都是留给有准备的人。到现在已经找到满意的工作了,对自己这段痛苦的面试做个总结。个人介绍首先介绍下我面试时的自身条件情况,我把自己的情况分为优势和劣势来说可能更有利于你们比较自身情况。劣势:1.14年3月开始到上海工作,面试的时候是18年10月到12月,四年多的经验。分析:工...
            0 2 2029
            分享
          • 一、pytest简介pytest是一个非常成熟的全功能的Python测试框架。pytest框架特点:简单灵活,非常容易上手支持参数化支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等测试用例的skip和xfail处理可以与jen...
            1 2 2744
            分享
          •    最近和几个认识的测试小伙伴聊天,谈论最近找工作不容易,要不就是简历石沉大海,就不就是面完,等半天内一点消息都没有,那么今天我们就来谈谈,面试过程中的常见的那些潜台词,帮大家把把关,希望会对大家找工作有帮助。  前提:你要有一个面试机会,有一个面试机会,说明你还算符合公司要求,是成功的一半。好好把握这个机会,机不可失失不再来啊!没有面试机会的小伙伴也不用担心,可以适当修改下简历或者投简历的途径,以前的文章有讲过。  一般公司都会有好几轮面试,能进到最后一轮,说明你已经过五关斩六将,快要拨开云雾见青天了,但是并不是百分百就成功了,不要轻敌哦~  面试成功几率60~80%:...
            2 2 1579
            分享
      • 51testing软件测试圈微信