tidevice+appium在windows系统实施iOS自动化
之前使用iOS手机做UI自动化都是在Mac电脑上进行的,但是比较麻烦,后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA,就准备试一下,记录一下过程。
tidevice的具体介绍可以参考一下这篇文章:tidevice 开源:不依赖 Xcode 也能启动 WDA · TesterHome
https://testerhome.com/topics/27758
环境准备
使用tidevice需要用到的环境包括:
python
tidevice
iTools
appium v1.20.0以上
已经安装WDA的iOS真机
安装tidevice
安装好python环境后,使用以下命令安装tidevice
pip3 install -U tidevice
安装后输入命令tidevice version查看版本

命令tidevice list查看连接的设备
![]()
命令tidevice applist查看设备上安装的应用
![]()
启动WDA
使用命令tidevice -u [设备udid] wdaproxy -B [wda的bundleid] --port 8100启动WDA

此时在浏览器中打开地址http://127.0.0.1:8100/status ,显示如下信息就表示WDA启动正常了

使用Appium+tidevice进行自动化
在appium配置中参照以下设置:
{
"platformName": "ios",
"deviceName": "iPhone",
"platformVersion": "13.6",
"bundleId": "目标app的bundleid",
"udid": "iphone的udid",
"webDriverAgentUrl": "http://localhost:8100",
"noReset": true,
"usePrebuiltWDA": false,
"useXctestrunFile": false,
"skipLogCapture": true,
"automationName": "XCUITest"
}
例如:
package testcase;
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.function.Function;
public class IosTest {
private static IOSDriver iosDriver;
public static void main(String[] args) throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("udid", "设备序列号");
capabilities.setCapability("deviceName", "设备名称");
capabilities.setCapability("platformVersion", "11.3");
capabilities.setCapability("bundleId", "被测应用的bundleId");
capabilities.setCapability("webDriverAgentUrl", "http://localhost:8100");
capabilities.setCapability("usePrebuiltWDA", "false");
capabilities.setCapability("useXctestrunFile", "false");
capabilities.setCapability("skipLogCapture", "true");
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability("automationName", "XCUITest");
iosDriver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
WebElement element = findElement(iosDriver, "//XCUIElementTypeButton[@name='理财']");
element.click();
element = findElement(iosDriver, "//XCUIElementTypeStaticText[@name='全部']");
element.click();
}
private static WebElement findElement(WebDriver driver, String xpath){
WebDriverWait wait = new WebDriverWait(driver, 60);
return wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver webDriver) {
return webDriver.findElement(By.xpath(xpath));
}
});
}
}
遇到的问题
1.最开始使用appium1.15.1,创建driver时appium一直报错
后来才发现tidevice要求appium要在1.20.0及以上版本

相关文章:
tidevice+appium在windows系统实施iOS自动化
之前使用iOS手机做UI自动化都是在Mac电脑上进行的,但是比较麻烦,后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA,就准备试一下,记录一下过程。 tidevice的具体介绍可以参考一下这篇文章:tidevice 开源&…...
面试热题(LRU缓存)
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 …...
微信小程序开发【从0到1~入门篇】2023.08
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 文件必须作用app.js是小程序逻辑app.json是小程序公告配置app.wxss否小程序公告样式表 3. 小程序项目结构 一个小程序页面由四个文件组成,分别是: 文…...
P1398 [NOI2013] 书法家
题目描述 输入 #1 3 13 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 输出 #1 24 输入 #2 3 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1…...
【构建卷积神经网络】
构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别,需重新设计,训练模块基本一致 全连接层:batch784,各个像素点之间都是没有联系的。 卷积层:batch12828,各个像素点之间是有联系的。 impor…...
SSH 认证原理
SSH协议登录服务器: $ ssh userhost 主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录 密码口令登录 通过密码进行登录,主要流程为: 1、客户端连接上服务器之后,服务器把自己的公钥传给客户端…...
基于DETR (DEtection TRansformer)开发构建MSTAR雷达影像目标检测系统
关于DETR相关的实践在之前的文章中很详细地介绍过,感兴趣的话可以自行移步阅读即可: 《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》 《书接上文——DETR评估可视化》 基于MSTAR雷达影像数据开发构建目标检测系统&am…...
Java分布式微服务1——注册中心(Eureka/Nacos)
文章目录 基础知识注册中心Eureka注册中心与Ribbon负载均衡1、Eureka注册中心2、Eureka的搭建3、Eureka服务注册4、复制服务实例5、拉取服务6、Ribbon负载均衡的流程及Eureka规则调整:7、Ribbon负载均衡饥饿加载 Nacos注册中心1、服务端Nacos安装与启动2、客户端Nac…...
(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码
参考文献: [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012. 1.基本原理 本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合…...
【Redis】——RDB快照
Redis 是内存数据库,但是它为数据的持久化提供了两个技术,一个是AOF日志,另一个是RDB快照: AOF 文件的内容是操作命令;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据,记录的是实际…...
微服务监控技术skywalking的部署与使用(亲测无坑)
微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注:本篇文章采用docker部署,采用8.2.0版本,版本一定…...
DLA 神经网络的极限训练方法:gradient checkpointing
gradient checkpointing 一般来说,训练的过程需要保存中间结果(不管是GPU还是CPU)。前向传播根据输入(bottom_data)计算输出(top_data),后向传播由top_diff计算bottom_diff(如果某个变量打开梯度进行训练的话ÿ…...
python excel 操作
excel文件内容如下: 一、xlrd 读Excel 操作 1、打开Excel文件读取数据 filexlrd.open_workbook(filename)#文件名以及路径,如果路径或者文件名有中文给前面加一个 r 2、常用函数 (1)获取一个sheet工作表 table file.sheets(…...
记一次Linux启动Mysql异常解决
文章目录 第一步: netstat -ntlp 查看端口情况2、启动Mysql3、查看MySQL日志 tail -100f /var/log/mysqld.log4、查看磁盘占用情况:df -h5、思路小结 第一步: netstat -ntlp 查看端口情况 并没有发现3306数据库端口 2、启动Mysql service …...
ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大
环球汇市行情摘要—— 昨日,美元指数上涨0.08%,收盘在102.08点, 欧元贬值0.07%,收盘价1.1003点; 日元贬值0.51%,收盘价142.47点; 英镑升值0.28%,收盘价1.2784点; 瑞…...
【博客687】k8s informer的list-watch机制剖析
k8s informer的list-watch机制剖析 1、list-watch场景: client-go中的reflector模块首先会list apiserver获取某个资源的全量信息,然后根据list到的rv来watch资源的增量信息。希望使用client-go编写的控制器组件在与apiserver发生连接异常时,…...
用Python获取链家二手房房源数据,做可视化图分析数据
前言 数据采集的步骤是固定: 发送请求, 模拟浏览器对于url地址发送请求获取数据, 获取网页数据内容 --> 请求那个链接地址, 返回服务器响应数据解析数据, 提取我们需要的数据内容保存数据, 保存本地文件 所需模块 win R 输入cmd 输入安装命令 pip install 模块名 (如果你…...
Yield Guild Games:社区更新 — 2023 年第二季度
本文重点介绍了 Yield Guild Games (YGG) 2023 年第二季度社区更新中涵盖的关键主题,包括公会发展计划 (GAP) 第 3 季的总结、YGG 领导团队的新成员以及 YGG 的最新消息地区公会网络和广泛的游戏合作伙伴生态系统。 在 YGG 品牌焕然一新的基础上,第二季…...
Stable Diffusion - 运动服 (Gymwear Leggings) 风格服装与背景的 LoRA 配置
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132179050 测试模型:DreamShaper 8 运动裤 (Gymwear Leggings) 是紧身的裤子,通常用于健身、瑜伽、跑步等运动。运动裤的…...
js-7:javascript原型、原型链及其特点
1、原型 JavaScript常被描述为一种基于原型的语言-每个对象拥有一个原型对象。 当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字…...
路径跟踪惩罚
基于动力学模型MPC的加入规划层的轨迹跟踪避障控制(优化过的,效果比书本的好)半夜调试控制器的时候,突然发现传统轨迹跟踪像极了直男开车——死盯目标点不管周围环境。这周给移动机器人怼了个混合架构,把全局规划直接喂…...
抖音无水印视频批量下载器:从零开始的高效内容采集指南
抖音无水印视频批量下载器:从零开始的高效内容采集指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾遇到过这样的困境?想要保存抖音上的精彩视频用于学习参考,…...
isac毕设选题效率提升实战:从任务调度到自动化部署的全流程优化
最近在忙 ISAC 相关的毕业设计选题,和不少同学交流后发现,大家的时间很大一部分都耗在了“重复劳动”上:环境配半天跑不起来,代码改一点就要手动重启服务测试,版本一多自己都忘了哪个是能用的。这哪是做毕设࿰…...
解构 Claude Code
大多数开发者认为 AI 编码工具就是一个聊天界面。你输入,它回复。你复制代码。你继续前进。 Claude Code 完全不同。 1、传统方式 vs Claude Code 方式 想象雇佣一位聪明的开发者,他他* 每次关闭对话就忘记一切 不知道自己在什么项目除非你每次都描述…...
怎样快速管理Windows预览版:离线注册工具完整使用手册
怎样快速管理Windows预览版:离线注册工具完整使用手册 【免费下载链接】offlineinsiderenroll 项目地址: https://gitcode.com/gh_mirrors/of/offlineinsiderenroll 想要体验Windows最新功能但又不想绑定微软账户?OfflineInsiderEnroll为你提供了…...
Cadence原理图库‘幽灵版本’冲突全解析:从ORDBLL-1125报错看Cache机制与避坑指南
Cadence原理图库‘幽灵版本’冲突全解析:从ORDBLL-1125报错看Cache机制与避坑指南 在电子设计自动化(EDA)领域,Cadence作为行业标杆工具链,其原理图设计模块被广泛应用于各类复杂电路开发。然而,许多资深用…...
跨模态迁移学习在超声目标检测中的落地实践(附乳腺超声数据集处理技巧)
跨模态迁移学习在医学超声检测中的实战指南:从自然图像到乳腺超声的模型迁移 医学影像分析领域长期面临标注数据稀缺的困境,尤其对于超声影像这类高度依赖操作者经验的模态。当我在去年参与一个乳腺癌早期筛查项目时,团队仅能获取到200例标注…...
华为新机散热“封神”:拆解仿生羽翼涡扇,看“小翅膀”如何颠覆手机温控
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...
Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南
Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 在Java Web开发领域,选择正确的MVC框架对项…...
轻松破解游戏资源加密难题:RPG Maker Decrypter使用指南
轻松破解游戏资源加密难题:RPG Maker Decrypter使用指南 【免费下载链接】RPGMakerDecrypter Tool for extracting RPG Maker XP, VX and VX Ace encrypted archives. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerDecrypter 直面游戏资源解密痛点 …...
