当前位置: 首页 > news >正文

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电脑上进行的&#xff0c;但是比较麻烦&#xff0c;后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA&#xff0c;就准备试一下&#xff0c;记录一下过程。 tidevice的具体介绍可以参考一下这篇文章&#xff1a;tidevice 开源&…...

面试热题(LRU缓存)

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -1 …...

微信小程序开发【从0到1~入门篇】2023.08

一个小程序主体部分由三个文件组成&#xff0c;必须放在项目的根目录&#xff0c;如下&#xff1a; 文件必须作用app.js是小程序逻辑app.json是小程序公告配置app.wxss否小程序公告样式表 3. 小程序项目结构 一个小程序页面由四个文件组成&#xff0c;分别是&#xff1a; 文…...

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…...

【构建卷积神经网络】

构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别&#xff0c;需重新设计&#xff0c;训练模块基本一致 全连接层&#xff1a;batch784&#xff0c;各个像素点之间都是没有联系的。 卷积层&#xff1a;batch12828&#xff0c;各个像素点之间是有联系的。 impor…...

SSH 认证原理

SSH协议登录服务器&#xff1a; $ ssh userhost 主要有两种登录方式&#xff1a;第一种为密码口令登录&#xff0c;第二种为公钥登录 密码口令登录 通过密码进行登录&#xff0c;主要流程为&#xff1a; 1、客户端连接上服务器之后&#xff0c;服务器把自己的公钥传给客户端…...

基于DETR (DEtection TRansformer)开发构建MSTAR雷达影像目标检测系统

关于DETR相关的实践在之前的文章中很详细地介绍过&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《DETR (DEtection TRansformer)基于自建数据集开发构建目标检测模型超详细教程》 《书接上文——DETR评估可视化》 基于MSTAR雷达影像数据开发构建目标检测系统&am…...

Java分布式微服务1——注册中心(Eureka/Nacos)

文章目录 基础知识注册中心Eureka注册中心与Ribbon负载均衡1、Eureka注册中心2、Eureka的搭建3、Eureka服务注册4、复制服务实例5、拉取服务6、Ribbon负载均衡的流程及Eureka规则调整&#xff1a;7、Ribbon负载均衡饥饿加载 Nacos注册中心1、服务端Nacos安装与启动2、客户端Nac…...

(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码

参考文献&#xff1a; [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012. 1.基本原理 本文建立的双层耦合模型内、外层分别对应求解容量配置与能量调度问题。外层模型设置光伏与储能容量备选集并将容量配置组合…...

【Redis】——RDB快照

Redis 是内存数据库&#xff0c;但是它为数据的持久化提供了两个技术&#xff0c;一个是AOF日志&#xff0c;另一个是RDB快照&#xff1a; AOF 文件的内容是操作命令&#xff1b;RDB 文件的内容是二进制数据。 RDB 快照就是记录某一个瞬间的内存数据&#xff0c;记录的是实际…...

微服务监控技术skywalking的部署与使用(亲测无坑)

微服务监控技术skywalking的部署与使用 1. 前期准备2. skywalking安装部署2.1 Java Agent2.2 apache/skywalking-oap-server2.3 apache/skywalking-ui 3. 项目启动4.效果展示 1. 前期准备 注&#xff1a;本篇文章采用docker部署&#xff0c;采用8.2.0版本&#xff0c;版本一定…...

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说&#xff0c;训练的过程需要保存中间结果&#xff08;不管是GPU还是CPU&#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)&#xff0c;后向传播由top_diff计算bottom_diff&#xff08;如果某个变量打开梯度进行训练的话&#xff…...

python excel 操作

excel文件内容如下&#xff1a; 一、xlrd 读Excel 操作 1、打开Excel文件读取数据 filexlrd.open_workbook(filename)#文件名以及路径&#xff0c;如果路径或者文件名有中文给前面加一个 r 2、常用函数 &#xff08;1&#xff09;获取一个sheet工作表 table file.sheets(…...

记一次Linux启动Mysql异常解决

文章目录 第一步&#xff1a; netstat -ntlp 查看端口情况2、启动Mysql3、查看MySQL日志 tail -100f /var/log/mysqld.log4、查看磁盘占用情况&#xff1a;df -h5、思路小结 第一步&#xff1a; netstat -ntlp 查看端口情况 并没有发现3306数据库端口 2、启动Mysql service …...

ATFX汇市:美联储年内或仍将加息依次,美指向下空间不大

环球汇市行情摘要—— 昨日&#xff0c;美元指数上涨0.08%&#xff0c;收盘在102.08点&#xff0c; 欧元贬值0.07%&#xff0c;收盘价1.1003点&#xff1b; 日元贬值0.51%&#xff0c;收盘价142.47点&#xff1b; 英镑升值0.28%&#xff0c;收盘价1.2784点&#xff1b; 瑞…...

【博客687】k8s informer的list-watch机制剖析

k8s informer的list-watch机制剖析 1、list-watch场景&#xff1a; client-go中的reflector模块首先会list apiserver获取某个资源的全量信息&#xff0c;然后根据list到的rv来watch资源的增量信息。希望使用client-go编写的控制器组件在与apiserver发生连接异常时&#xff0c…...

用Python获取链家二手房房源数据,做可视化图分析数据

前言 数据采集的步骤是固定: 发送请求, 模拟浏览器对于url地址发送请求获取数据, 获取网页数据内容 --> 请求那个链接地址, 返回服务器响应数据解析数据, 提取我们需要的数据内容保存数据, 保存本地文件 所需模块 win R 输入cmd 输入安装命令 pip install 模块名 (如果你…...

Yield Guild Games:社区更新 — 2023 年第二季度

本文重点介绍了 Yield Guild Games (YGG) 2023 年第二季度社区更新中涵盖的关键主题&#xff0c;包括公会发展计划 (GAP) 第 3 季的总结、YGG 领导团队的新成员以及 YGG 的最新消息地区公会网络和广泛的游戏合作伙伴生态系统。 在 YGG 品牌焕然一新的基础上&#xff0c;第二季…...

Stable Diffusion - 运动服 (Gymwear Leggings) 风格服装与背景的 LoRA 配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132179050 测试模型&#xff1a;DreamShaper 8 运动裤 (Gymwear Leggings) 是紧身的裤子&#xff0c;通常用于健身、瑜伽、跑步等运动。运动裤的…...

js-7:javascript原型、原型链及其特点

1、原型 JavaScript常被描述为一种基于原型的语言-每个对象拥有一个原型对象。 当试图访问一个对象的属性时&#xff0c;它不仅仅在该对象上搜寻&#xff0c;还会搜寻该对象的原型&#xff0c;以及该对象的原型的原型&#xff0c;依次层层向上搜索&#xff0c;直到找到一个名字…...

路径跟踪惩罚

基于动力学模型MPC的加入规划层的轨迹跟踪避障控制&#xff08;优化过的&#xff0c;效果比书本的好&#xff09;半夜调试控制器的时候&#xff0c;突然发现传统轨迹跟踪像极了直男开车——死盯目标点不管周围环境。这周给移动机器人怼了个混合架构&#xff0c;把全局规划直接喂…...

抖音无水印视频批量下载器:从零开始的高效内容采集指南

抖音无水印视频批量下载器&#xff1a;从零开始的高效内容采集指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾遇到过这样的困境&#xff1f;想要保存抖音上的精彩视频用于学习参考&#xff0c;…...

isac毕设选题效率提升实战:从任务调度到自动化部署的全流程优化

最近在忙 ISAC 相关的毕业设计选题&#xff0c;和不少同学交流后发现&#xff0c;大家的时间很大一部分都耗在了“重复劳动”上&#xff1a;环境配半天跑不起来&#xff0c;代码改一点就要手动重启服务测试&#xff0c;版本一多自己都忘了哪个是能用的。这哪是做毕设&#xff0…...

解构 Claude Code

大多数开发者认为 AI 编码工具就是一个聊天界面。你输入&#xff0c;它回复。你复制代码。你继续前进。 Claude Code 完全不同。 1、传统方式 vs Claude Code 方式 想象雇佣一位聪明的开发者&#xff0c;他他* 每次关闭对话就忘记一切 不知道自己在什么项目除非你每次都描述…...

怎样快速管理Windows预览版:离线注册工具完整使用手册

怎样快速管理Windows预览版&#xff1a;离线注册工具完整使用手册 【免费下载链接】offlineinsiderenroll 项目地址: https://gitcode.com/gh_mirrors/of/offlineinsiderenroll 想要体验Windows最新功能但又不想绑定微软账户&#xff1f;OfflineInsiderEnroll为你提供了…...

Cadence原理图库‘幽灵版本’冲突全解析:从ORDBLL-1125报错看Cache机制与避坑指南

Cadence原理图库‘幽灵版本’冲突全解析&#xff1a;从ORDBLL-1125报错看Cache机制与避坑指南 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;Cadence作为行业标杆工具链&#xff0c;其原理图设计模块被广泛应用于各类复杂电路开发。然而&#xff0c;许多资深用…...

跨模态迁移学习在超声目标检测中的落地实践(附乳腺超声数据集处理技巧)

跨模态迁移学习在医学超声检测中的实战指南&#xff1a;从自然图像到乳腺超声的模型迁移 医学影像分析领域长期面临标注数据稀缺的困境&#xff0c;尤其对于超声影像这类高度依赖操作者经验的模态。当我在去年参与一个乳腺癌早期筛查项目时&#xff0c;团队仅能获取到200例标注…...

华为新机散热“封神”:拆解仿生羽翼涡扇,看“小翅膀”如何颠覆手机温控

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字&#xff08;B站同名&#xff09; &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;从业16年 从…...

Java MVC框架终极对决:Blade vs Spring Boot的完整对比指南

Java MVC框架终极对决&#xff1a;Blade vs Spring Boot的完整对比指南 【免费下载链接】blade :rocket: Lightning fast and elegant mvc framework for Java8 项目地址: https://gitcode.com/gh_mirrors/bl/blade 在Java Web开发领域&#xff0c;选择正确的MVC框架对项…...

轻松破解游戏资源加密难题:RPG Maker Decrypter使用指南

轻松破解游戏资源加密难题&#xff1a;RPG Maker Decrypter使用指南 【免费下载链接】RPGMakerDecrypter Tool for extracting RPG Maker XP, VX and VX Ace encrypted archives. 项目地址: https://gitcode.com/gh_mirrors/rp/RPGMakerDecrypter 直面游戏资源解密痛点 …...