zoukankan      html  css  js  c++  java
  • 基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建

    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; 热烈欢迎大家指教。

         

       

  • 相关阅读:
    [LeetCode]10. Regular Expression Matching
    [LeetCode]9. Palindrome Number
    [LeetCode]8. String to Integer (atoi)
    javascript 内部函数的定义及调用
    canvas和白鹭引擎中平移,旋转,缩放
    改变this指向的call,apply,bind方法
    关于JavaScript中this小有理解
    关于位运算符的计算法方法
    制作简单的GIF动图
    HTML中的单位小结
  • 原文地址:https://www.cnblogs.com/anion-blogs/p/6215517.html
Copyright © 2011-2022 走看看