iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,

改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 app客户端自动化框架。并实现了自动化测试app的demo。

一  整体框架设计

首先是WebdriverAgent服务原理以及WDAClient以及ruby测试脚本调用框架图如下:

二  WebDriverAgent:

WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。

它有如下特性:

  • 真机和模拟器都支持
  • 实现了大部分的 WebDriver spec
  • USB support for devices,所谓的usb支持,指的是设备不需要上网,目前client binding 还没有。
  • 提供了一个 Inspector
  • Easy development cycle as it can be launched & debugged directly via Xcode
  • Unsupported yet, but works with tvOS & OSX

运行和使用:

WebDriverAgent Facebook发布的,这里有详细介绍:https://github.com/facebook/WebDriverAgent/

直接下载下来,Xcode8中调试一下;连接真机运行test 手机端就会安装好server-WebDriverAgent

(具体教程test而Home上有的:https://toutiao.io/posts/404649/app_preview)

三  WDAClient:

   WDAClient是基于WebDriverAgent实现的WDA的客户端。至目前完成了被测app的启动,根据不同属性定位元素 以及元素的点击 输入等基本操作。

   具体实现:

     1. 首先:启动webdriveragent;

     2. app启动:

       向WebdriverAgent发送post请求 ,请求参考WDA项目中 FBSessionCommands.m

请求地址:url=http://#{ip}:8100/session,WevDriverAgent会响应启动app,并返回session数据;

     3.启动app后,定位元素以及操作元素

        定位元素 post请求:url+/session/element, 请求参数是定位元素标签以及值 参考 FBFindElementCommands.m;响应会返回elementId

操作*元素post请求:url+/session/element/id/*  参考项目中文件:/Commands/FBElementCommands.m  里面介绍了很多元素操作的方法 进行相应的转换即可。

在WebDriverAgentLib/Commands/中有很多方法,目前只实现这么多,后续将模块补充完整;

四  Ruby Testing Script

   WDAClient封装完成之后,下面就是自动化测试脚本实现;我使用的是ruby语言编写的;分为test*.rb, *.rb,app.rb;

     test_*.rb:  使用自带测试框架testunit编写app(eg. login) 测试脚本;

*.rb:  针对login page进行元素以及操作封装

app.rb:是针对WDAClient中app启动,元素定位和操作进行整理封装供 *.rb  page使用。

本次只是总结了一下整个自动化测试框架;

具体实现请参考github上面的项目:https://github.com/anion102/wda_client; 热烈欢迎大家指教。

   

基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建的更多相关文章

  1. IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建

    导引 iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后,改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 ...

  2. 【转载】Loadrunner实现Android / IOS 手机APP压力测试

    随着手机APP用户量的增大,大的手机APP一般都需要进行压力测试,这几天用了loadrunner 12进行了手机APP的压力测试,整理了下,大家可以参考参考怎样给Andorid / IOS手机APP进 ...

  3. 基于mui的H5套壳APP开发web框架分享

    前言 创建一个main主页面,只有主页面有头部.尾部,中间内容嵌入iframe内容子页面,如果在当前页面进行跳转操作,也是在iframe中进行跳转,而如果点击尾部按钮切换模块.页面,那就切换ifram ...

  4. 基于全注解的SpringMVC+Spring4.2+hibernate4.3框架搭建

    概述 从0到1教你搭建spring+springMVC+hibernate整合框架,基于注解. 本教程框架为基于全注解的SpringMVC+Spring4.2+hibernate4.3,开发工具为my ...

  5. ios手机app消息推送

    h5+app项目,推送平台 " 个推 " 首先在manifest.json配置文件中点击模块权限配置,勾选push消息推送配置如图1-1 第二部在manifest.json配置文件 ...

  6. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发

    经过一段时间的学习,做公司项目,对mui框架有了更加深入完整的了解,其实刚开始接触HBuilder中的mui框架只是简单的了解,并没有深入的研究,后来由于工作的需求,不得不深入研究,并运用的项目中去. ...

  7. Mac使用Charles抓取ios手机APP中的https请求

    1.配置Http代理 Port为监听端口号,默认为8888,勾选Enable transparent HTTP proxying,接着勾选SOCKS proxy,可以监听Socks请求 2.安装Cha ...

  8. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面

    创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...

  9. web app 基础界面框架搭建

    一.问题的产生 基础框架界面如图1所示,目前app流行布局 图1 布局关注点: 1.Title和Footer部分为固定布局position:fixed,存在的争议是android2.x和IOS4一下说 ...

随机推荐

  1. 球形环境映射之angular与latlong格式互换

    这么做只是纯好奇,因为这种格式互换在实际中是没有意义的,下面映射方式互换的贴图说明了一切. 刚开始打算使用matlab进行贴图映射方式的转换,但许久不用很是生疏,而且生成图片要考虑很多事情,尤其是生成 ...

  2. Java中的Exception

    Caused by: java.lang.IllegalArgumentException: The servlets named [XXX] and [YYY] are both mapped to ...

  3. fork函数创建新进程过程分析

    gdb调试执行流程,首先设置断点b sys_clone,当在shell下输入fork命令后,系统执行至断点,接下来按步执行: 判断是否被跟踪 判断是否被创建为轻量级进程(vfork) 判断父进程是否被 ...

  4. dis进行反编译

    摘录自官方文档: https://docs.python.org/2/library/dis.html 回头自己也脑补下. 可以使用dis查看自己代码的复杂度之类的东西. 比如while 1 和whi ...

  5. ASP.NET收发邮件

    在.NET中常见到在线发邮件的实例,网站加上这个功能可以方便站长与用户的交流. NET 中发邮件有时候会用到IIS组件中的邮件服务器,不过复杂.对虚拟主机的配置也较麻烦, 也可用第三方组件比如Jmai ...

  6. LintCode Sort Colors

    For this problem we need to sort the array into three parts namely with three numbers standing for t ...

  7. 0-Spark高级数据分析-读书笔记

    学完了<Spark快速大数据分析>,对Spark有了一些了解,计划更近一步,开始学习<Spark高级数据分析>.这本书是用Scala写的,在学习的过程中想把其中的代码转换成Ja ...

  8. 关于ArcGis的二次开发-基于ArcEngine10.2(内有安装包)

    网上很少有arcgis engine10.2的安装包,在这里我把安装包链接附上,是百度云,有需要的可以自己下--http://pan.baidu.com/s/1mhIhYYG 顺带着把arcgis d ...

  9. 微软雅黑 在css里怎么写

    1.首先要了解css中是如何控制字体的. font:在一个声明中设置所有字体属性: font有以下几个属性: font-style:字体样式 font-variant:字体异体 font-weight ...

  10. RadioButtonList的使用

    前台绑定: <asp:RadioButtonList ID="hlBatchYuJi" runat="server" RepeatColumns=&quo ...