Window搭建IOS App自动化测试环境

news/2024/7/20 22:04:17 标签: ios

平台搭建:tidevice(Windows逆向通信iOS工具)+WebDriverAgent(iOS通信服务)+facebook-wda(iOS测试框架)

macOS+Xcode:在手机上安装WebDriverAgent的时候需要用到,必须要Xcode工具构建,构建完就不依赖了。

工具介绍:

1、tidevice

        在window系统可以跑IOS自动化脚本,得力于tidevice这个工具,tidevice 是阿里开源的一个基于Python的iOS自动化工具,通过逆向iOS通信协议,模拟xcodebuild与手机进行通信,向手机发送特定的指令,来启动WDA,从而可以脱离Mac电脑,能够在Linux、Windows上运行iOS自动化。tidevice基于python实现了libimobiledevice中的功能。

2、WebDriverAgent

        WebDriverAgent是Facebook 在2015年的 SeleniumConf 大会上推出了一款iOS移动测试框架。它在 iOS 端实现了一个 WebDriver server ,通过这个 server 来实现远程控制 iOS 设备。它主要通过连接XCTest.framework来调用Apple的API实现对设备的操作。

WebDriverAgent采用C/S架构,集成appium使用的WebDriver协议规范,通信协议使用Mobile JSON Wire Protocol。
WDAClient:WDA的客户端,测试库facebook-wda 就是 WDA 的 Python 客户端库,通过HTTP协议(Mobile JSON Wire Protocol)与WebDriverAgent进行通信。
WebDriverAgentRunner:运行在手机上的WDA server,默认监听端口为8100,主要功能包括①接收WDAClient的请求并将操作命令发送给XCTest.framework。②将响应发送给WDA Client

3、facebook-wda

        facebook-wda 是ATX项目下面的一个子库,专门提供 iOS 应用的自动化测试,可以通过 ATX 使用这个库,当然也可以单独拿来使用。facebook-wda 这个 Python 库,通过直接构造 HTTP 请求直接跟WebDriverAgent通信。它是一个非常短小精悍的一个库,并不像 appium、macaca 还有一个中间转发服务,支持这么多的语言。虽然代码比较精炼,但是能完成的功能却非常强大。你能在 appium 里面找到的功能,这个库有提供,找不到的功能,这个库也有提供。

4、weditor

        元素定位工具,安卓、IOS都可以用

5、iTunes

        Windows连接苹果设备工具

工具下载和安装:

 iTunes:

因为iTunes里面有usbmux驱动,需要安装一下它,iTunes安装成功后,连接上你的iPhone。

  • 下载 Windows 10(64 位)版 iTunes 12.10.11
  • 下载 Windows 10(32 位)版 iTunes 12.10.11

weditor:

参考Android安装环境方法, 使用以下命令安装weditor

pip3 install -U weditor

启动weditor

 python -m weditor

tidevice:

该工具要求python环境3.6+,使用pip3命令来安装tidevice,安装成功后设置全局环境变量:

pip3 install -U "tidevice"

查看是否安装成功:

tidevice version

 查看手机信息:

tidevice info

查询应用信息:

tidevice applist

启动wda

tidevice -u [设备 udid] wdaproxy -B [wda 的 bundle Id] --port 8100 # 运行 XCTest 并在PC上监听8100端口

运行成功后打开浏览器访问: http://127.0.0.1:8100/status,会看到以下信息:

{
  "value" : {
    "message" : "WebDriverAgent is ready to accept commands",
    "state" : "success",
    "os" : {
      "testmanagerdVersion" : 28,
      "name" : "iOS",
      "sdkVersion" : "16.4",
      "version" : "16.3.1"
    },
    "ios" : {
      "ip" : "192.168.0.117"
    },
    "ready" : true,
    "build" : {
      "time" : "Jun  6 2023 11:05:04",
      "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
    }
  },
  "sessionId" : null
}

WebDriverAgent:

这篇文章写得很详细了,不再浪费时间了:[facebook-wda]搭建iOS App自动化环境_wda.client_LL-Dynabook的博客-CSDN博客

facebook-wda:

pip3 install -U facebook-wda

简单测试:

import wda
c = wda.Client('http://localhost:8100')  # DEVICE_URL
c.session().app_activate("com.apple.Preferences")  # 打开设置
c.sleep(2)
c.home()

具体详细方法可以看官方文档:GitHub - openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)

以上环境搭建完成了,可以去写ios app自动化脚本了。

备注:

  •     部署iOS测试平台需要苹果开发者证书,现在使用个人Apple ID登陆即可,不需要另外注册付费开发者账号
  •     个人版的免费证书,每隔7天左右,要手动更新开发者证书;
  •     需要手动的在iPhone中选择信任证书,通用->设备管理->选择信任;
  •     最多支持3台设备;

建议:使用公司的企业账号或个人收费账号测试(企业账号可以绑定100台也不需要更新证书),不然很头疼


 


http://www.niftyadmin.cn/n/404098.html

相关文章

华为OD机试之在字符串中找出连续最长的数字串(含“+-”号)(Java源码)

在字符串中找出连续最长的数字串(含“”号) 输入描述 请在一个字符串中找出连续最长的数字串,并返回这个数字串。 如果存在长度相同的连续数字串,返回最后一个。 如果没有符合条件的字符串,返回空字符串””。 注意: 数字串可以由…

18JS09——作用域

作用域 一、作用域1、作用域 二、变量的作用域1、变量作用域的分类2、全局变量3、局部变量4、全局变量和局部变量区别 三、作用域链 目标: 1、作用域 2、变量的作用域 3、作用域链 一、作用域 1、作用域 通常来说,一段程序代码中所用到的名字并不总是有…

KafkaConsuner 指定开始消费的位置

KafkaConsumer 指定消费位置的基础 一个 Topic 对应着磁盘上的几个重要的文件: .log:数据文件,存储了该 topic 中的所有消息。.index:索引文件,对数据文件中的消息进行索引。关键就是可以按照 offset 来索引.timeind…

区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU卷积门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-GRU卷积神经网络结合门控循…

Keras-3-实例1-二分类问题

1. 二分类问题 1.1 IMDB 数据集加载 IMDB 包含5w条严重两极分化的评论,数据集被分为 2.5w 训练数据 和 2.5w 测试数据,训练集和测试集中的正面和负面评论占比都是50% from keras.datasets import imdb(train_data, train_labels), (test_data, test_l…

ML算法——梯度下降随笔【机器学习】

文章目录 11、梯度下降 11、梯度下降 梯度下降如何帮助参数优化? 梯度下降是一种用于参数优化的常见方法。它的基本思想是通过迭代地更新参数,以减小损失函数|代价函数的值,从而找到一个最优解。 梯度方向:→|向右|正向 ←|向左|反…

一、tienchin健身系统技术点复现-注解限流

一、tienchin健身系统技术点复现-注解限流 这个技术用到的点是 用Java代码执行 redis 的 lua 脚本,采用 请求接口方法 注解RateLimiter ,前置通知拦截判断请求次数,做出限流操作。 Gitee代码仓库-rate-limiter 1、application.yml 配置 re…

【Linux】多线程概念初讲

线程大章节第一篇文章 文章目录 前言一、linux线程基本概念二、线程与进程的对比 1.线程控制的接口总结 前言 什么是线程呢? 在一个程序里的一个执行路线就叫做线程( thread )。更准确的定义是:线程是 “ 一个进程内部的控制…