IOS开发-基于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)
Demo运行后的界面显示:
主界面:
Alerts界面:
Attributes界面:
Scrolling界面:
三 :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 里面介绍了很多元素操作的方法 进行相应的转换即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
在WebDriverAgentLib/Commands/中有很多方法,目前只实现这么多,后续将模块补充完整;
四:Testing Script
WDAClient封装完成之后,就是自动化测试脚本实现。
安装WebDriverAgent笔记注意点
在安装WebDriverAgent时遇到了不少坑,小小的记录下。最初参考的是这个地址来安装,很详细;
1、WebDriverAgent教程在github上时有的在xcode打包之前一定记得要先执行 ./scripts/bootstrap.sh,至于证书什么的,使用自己个人账号就好了
2、ios10后就不能直接访问http://127.0.0.1:8100/inspector了,需要通过usb与手机通讯好才能使用;即使用iproxy来转发端口;
转发方法:iproxy <本地端口> <手机端口> [udid];一台机子时可以不写udid;执行转发方法后控制台显示:waiting for connection
3、执行好2后,在浏览器中执行http://localhost:8100/inspector;就可以获取到元素信息了
---------------------
作者:Maxdong24
来源:CSDN
原文:https://blog.csdn.net/Maxdong24/article/details/75532791
版权声明:本文为博主原创文章,转载请附上博文链接!
IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建的更多相关文章
- 基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建
iOS自动化测试一直使用的appium,iOS系统升级至10.0 Xcode8.0之后, 改用WebDriverAgent代理服务作为server,编写了一套基于WebDriverAgent服务 ap ...
- 《iOS开发指南:从零基础到App Store上架(第2版)》
<iOS开发指南:从零基础到App Store上架(第2版)> 基本信息 作者: 关东升 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115348029 上架时间:201 ...
- 基于全注解的SpringMVC+Spring4.2+hibernate4.3框架搭建
概述 从0到1教你搭建spring+springMVC+hibernate整合框架,基于注解. 本教程框架为基于全注解的SpringMVC+Spring4.2+hibernate4.3,开发工具为my ...
- ios蓝牙开发(三)ios连接外设的代码实现:手机app去读写蓝牙设备。
手机app去读写蓝牙设备....... 代码下载: 原文博客主提供Github代码连接,地址是:https://github.com/coolnameismy/demo ios连接外设的代码实现流程: ...
- iOS开发技巧 - Size Class与iOS 8多屏幕适配(一)
0. 背景: 在iOS开发中,Auto Layout(自动布局)能解决大部分的屏幕适配问题. 但是当iPhone 6和iPhone 6 Plus发布以后, Auto Layout已经不能解决复杂的屏幕 ...
- 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述
前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...
- iOS开发--基于AFNetWorking3.0的图片缓存分析
图片在APP中占有重要的角色,对图片做好缓存是重要的一项工作.[TOC] 理论 不喜欢理论的可以直接跳到下面的Demo实践部分 缓存介绍 缓存按照保存位置可以分为两类:内存缓存.硬盘缓存(FMDB.C ...
- iOS开发——基于corelocation位置定位——工具类
(代码工具类已写好,空闲时间整理成文档,待更新……)
- ios开发——实用技术篇OC篇&iOS的主要框架
iOS的主要框架 阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...
随机推荐
- day17-jdbc 1.课程介绍
- [codeforces126B]Password
解题关键:KMP算法中NEXT数组的理解. #include<bits/stdc++.h> #define maxn 1000006 using namespace std; typede ...
- Python程序设计6——面向对象
面向对象有三大特征:多态(对应方法覆写).封装.继承(对应方法重载),这个在Java中已经说得很详细了,这里面只是介绍Python在这三个特性方面的实现. 1 创建自定义类 Python和Java一样 ...
- 自定义select样式
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Visual Studio2012快捷键总结
(1)如何设置更改快捷键 1.进入工具----选项 对话框 2.选择 环境---->键盘 3.在 [显示命令包含] 下面的对话框中输入“对齐”关键字,然后就会在这个编辑框下面一个文本窗口中显 ...
- 【Arcgis android】 离线编辑实现及一些代码段
Arcgis android 离线编辑实现及一些代码段 底图添加 private String path="file:///mnt/sdcard/data/chinasimple.tpk&q ...
- 自己写的Log记录组件
常规的Debug组件的封装,然后加了一个文件log,分异步和同步(可跨平台使用). /// <summary> /// 常用IO操作类 /// </summary> publi ...
- json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式
JSON序列化 /// <summary> /// JSON序列化 /// </summary> public static class SPDBJsonConvert { ...
- C#中如何防止Excel做科学计算法转换
C#中如何防止Excel做科学计算法转换 string style = @"<style>.text{mso-number-format:\@;}</style>& ...
- javascript 字典类型的使用
javascript 字典类型的使用 1.使用Array: var arr = new Array(); arr["zs"] = "zhangsan"; ar ...