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. 将string转换成char* (转)

    原文:http://blog.sina.com.cn/s/blog_786ce14d01014lpr.html string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为cha ...

  2. 【Python】re正则表达式

    简单举几个常用的re正则表达式的例子: m = re.match("abc", "abcdef") print(m.group()) # 输出:abc m = ...

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

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

  4. Linux内核分析——分析system_call中断处理过程

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 我选择的是get ...

  5. 【已解决】关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案

    近日在使用SQL Server 2008的过程中,修改已创建完成的表结构时,却一直提示弹出如下提示: 不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了“阻 ...

  6. Ansible-Tower快速入门-1.概览【翻译】

    概览 Tower Ansible-Tower是作为Ansible的一个web接口界面,并采用REST API作为端点接入.通过使用开源的orchestration engine,无论是与你的团队共享操 ...

  7. 用UltraEdit软件替换回车换行的窍门

    转载:http://www.zhuantilan.com/jiqiao/46518.html 方法/步骤 1.打开一个原始文档,在文档中各个人物名称是以逗号分隔的,我们下面来尝试把逗号替换为换行符. ...

  8. formValidator 表单验证

    作为一名程序员,在解决工作中遇到问题之后,做一些总结是有必要的,既方便总结温习相关知识点,也为广大的程序员提供了一些工作经历,给予同行一面明鉴. 首先,众所周知的,我们需要引用js类库: eg:< ...

  9. 用ajax提交form表单及乱码问题

    要求 1. form里是习题和选择的答案包含内容较多,直接用ajax获取页面元素较多,麻烦. 2. 也不能直接用form提交,form提交后会跳转页面,如果出错想在本页面获取错误信息(ajax提交)且 ...

  10. (原创)VM中的CentOS6.4中安装CloudStack6.3①

    CloudStack是一个功能强大.UI友好的开源云(IaaS)计算解决方案.自Ctrix将CloudStack捐献给 apache 后,一直持续高速发展,其社区活跃度已经渐渐赶上风头一时无两的另一开 ...