网络编程

当前位置:永利402游戏网站-永利402com官方网站 > 网络编程 > Appium简要介绍及办事原理

Appium简要介绍及办事原理

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-09-14 02:18
1、模拟器调试

准备工作:① 获取待测试应用的源码;② 一台安装了Xcode和Xcode Command Line Developer Tools的Mac机器。

永利402游戏网站 1Appium设置界面.png

注意:虚拟器需要选择沙盒里面的app。其中模拟器设置可以不用填BundelID和UDID

这之后还远远没有结束,剩下的还有运行Appium进行APP生成的product的压缩包进行启动录制,根据自动生成的脚本编辑运行调试,漫漫长路还将继续学习

有很多人问,UI自动化应不应该投入,有没有前途。这个问题没有绝对的,要看项目的类型,总的来说针对相对比较稳定的项目,UI自动化真正的价值有两点:1、是验证逻辑而非UI;2、是代替大量UI重复操作。如果这个事情至上而下都是支持的,想做的,投入的方向没有错,价值认识正确,肯定是有积极的产出的。另外,UI自动化是测试生来无法回避的一种能力,可以不依赖他,但是你需要他。最后用网上的几句话作为文章的结尾:UI自动化是一种能力,常常无法回避;UI自动化会给人幻觉,要看清现实与价值;喜欢是放肆,爱是克制。而克制是UI自动化能发挥作用的关键。

最近Appium桌面版本更新到了Appium version to 1.6.4

永利402游戏网站 2Appium version to 1.6.4.png永利402游戏网站 3Appium version to 1.6.4 Config.png

相关文章:1、Appium社区;2、Appium 从入门到原理;3、Appium简介及工作原理;4、用实例告诉你,如何利用Appium实现移动终端UI自动化测试;

二、Appium的工作原理

2、通过应用程序安装Appium

可以从地址:Appium下载到最新和历史的Appium安装应用程序。点击听诊器logo确认环境是否安装成功,提示 everything looks good,bye! 表示环境正常。

永利402游戏网站 4安装Appium.png

这个过程可能会碰到配置的问题:

1、node.js的配置;2、Java Home的配置;2、Xcode Command工具安装等等

遇到诊断器诊断出的问题可以自行google解决,我遇到问题的解决时看的博客文章: Appium 自动化—基于 java 的 iOS 环境搭建

一、什么是Appium

Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。

永利402游戏网站,Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。

appium选择了client-server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及webdriver如何做到支持多语言的;

下面这段介绍来自于appium的官网。

Appium is an open-source tool you can use to automate mobile native, mobile web, and mobile hybrid applications on iOS and Android platforms. “Mobile native apps” are those written using the iOS or Android SDKs. “Mobile web apps” are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome on Android). “Mobile hybrid apps” have a native wrapper around a “webview” – a native control that enables interaction with web content. Projects like Phonegap, for example, make it easy to build apps using web technologies that are then bundled into a native wrapper – these are hybrid apps. Importantly, Appium is “cross-platform”: it allows you to write tests against multiple platforms (iOS, Android), using the same API. This enables a large or total amount of code reuse between iOS and Android testsuites.

因为公司业务需求,最近开始研究自动化测试的内容。由于同时要做 iOS、安卓和 Web 测试,我们最终选择了 Appium 这个开源工具并基于它做一些封装,从而能够使用一套公共 API 完成移动端的双端测试。本文主要会基于一些开源代码和个人实践,对 iOS 端的自动化测试原理做一个简单介绍,Android 略有区别但也大致同理。

iOS自动化测试一直很神秘,很多人都在探索和找寻最强大的那一款自动化测试工具。个人观点,没有最强大只有最适合,适合以后使用熟练了自然功能强大了。写在正文之前的几句废话。说到功能自动化测试一般特指基于UI层面的自动化,本文中介绍的自动化测试框架是UI自动化测试框架,选择了 Appium 这个开源工具。

2.2 ios

在IOS端,appium同样使⽤WebDriver的一套协议。

与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的⾃自动化测试框架),然后在设备中注⼊入bootstrap.js进⾏行监听。

2、原理:

Appium提供各个语言的第三方库,将测试脚本转化成 WebDriver 协议下的 URL,通过 Node 服务发送到各个平台上的代理工具,代理工具在运行过程中不断接收 URL,根据 WebDriver 协议解析出要执行的操作,然后调用各个平台上的原生测试框架完成测试,再将测试结果返回给 Node 服务器。

永利402游戏网站 5iOS平台原理架构.jpeg

在iOS端,Appium同样使用WebDriver协议。

  1. Appium iOS封装了苹果公司的Instruments框架,主要用了Instrument里的UiAutomation(Apple的自动化测试框架),然后在设备中注入,如下图所示:

    永利402游戏网站 6bootstrap.js进行监听.png

  2. WebDriver script 是selenium风格的测试脚本;

  3. 中间的是Appium服务,Appium启动一个服务,与Selenium-WebDriver测试框架相类似,Appium支持标准的WebDriver JSONWireProtocol。它提供一套Web服务,Appium Server接收WebDriver标准请求,解析请求内容,调用对应框架相应操作;

  4. Appium Server调用instruments.js启动一个sock server,同时分出一个子进程运行instruments.app,将bootstrap.js注入到设备用于和外界进行交互;

  • 对于WebView的操作,运用了iOS webkit debug proxy来实现。

Mac OS X系统appnium环境安装步骤:

appium 在ios端工作流
  1. client端 依然是 test script是我们的webdriver测试脚本。

  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。

  3. appium server调用instruments.js 启动⼀一个socket server,同时分出一个⼦子进程运⾏instruments.app,将bootstrap.js(一个UIAutomation脚本)注⼊入到device⽤于和外界进行交互

  4. 最后Bootstrap.js将执行的结果返回给appium server

  5. appium server再将结果返回给 appium client。

所以我们可以看到android与ios区别在于appium 将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap 驱动UIAutomation和UiAutomator去devices上完成具体的动作。

1、通过命令行安装Appium***
>brew install node //get node.js>npm install -g appium //get appium>npm install wd //get appium client>appium & //start appium
appium 在android端工作流
  1. client端也就是我们 test script是我们的webdriver测试脚本。

  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。

  3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。

  4. 最后Bootstrap将执行的结果返回给appium server。

  5. appium server再将结果返回给 appium client。

1、简介:

Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Ruby,C#,Java, JS,OC, PHP,Python,Perl和Clojure 语言。

永利402游戏网站 7iOS自动化工具对比.jpeg

  • 同时支持Android和iOS自动化测试,同一个手机移动项目在同一套自动化测试体系,维护起来方便;
  • 支持多种脚本语言,不会将测试人员限制在某种特定语言或者框架上;
  • 不需要重新编译应用或者任何方式修改它就可以进入测试行为;
  • 移动自动测试框架是开源的;
  • Appium社区更活跃、有可能纳入Selenium-WebDriver体系,从而成为事实上的移动应用测试标准

2.1 Android

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。

UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。

1、真机调试

准备工作:① 一个苹果的开发者ID和有效的开发者对应的配置文件及签名文件;② 一台iPad或者iPhone(把UDID加入证书里);③ 获取待测试应用的源码;④ 一台安装了Xcode和Xcode Command Line Developer Tools的Mac机器。Appium设置界面必填配置:

永利402游戏网站 8Appium设置界面.png

注意事项:真机调试时的app必须是包含描述文件的app文件,不能选择虚拟器生成的沙漏里的app文件。

本文由永利402游戏网站-永利402com官方网站发布于网络编程,转载请注明出处:Appium简要介绍及办事原理

关键词:

上一篇:OCMock 3 参考

下一篇:没有了