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及以上版本

相关推荐
私人珍藏库3 小时前
[Windows] EndNote 2025.1.19456 汉化版
windows·工具·软件·win·汉化
love530love3 小时前
告别环境崩溃:ONNX 与 Protobuf 版本兼容性指南
人工智能·windows·python·onnx·stablediffusion·comfyui·protobuf
weixin_516023073 小时前
SRIM的安装
windows
我的大老婆7 小时前
【Windows 共享打印机纯干货】跨路由器/跨网段访问打印机、两条宽带两个路由器共享一台打印机、外网/局域网外访问DMZ打印机、192.168.1.107 主机访问192.168.2.105 打印机
windows·经验分享·计算机网络·路由器·共享打印机·跨网段共享打印机·dmz主机
蒙小萌19937 小时前
Performance and metrics
ios
xiaoliuliu123458 小时前
ChromeStandalone_58.0.3029.110使用步骤详解(附安装与设置教程)
windows
shughui9 小时前
APP、Web、H5、iOS与Android的区别及关系
android·前端·ios
Bruce_Liuxiaowei9 小时前
基于Regsvr32.exe的渗透测试完整记录
网络·windows·安全·网络安全·内网渗透
玖釉-9 小时前
[Vulkan 实战] 深入解析 Vulkan Compute Shader:实现高效 N-Body 粒子模拟
c++·windows·图形渲染
日日行不惧千万里10 小时前
EFI 与 UEFI 详解
windows