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

相关推荐
问道飞鱼1 分钟前
【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现
android·ios·harmonyos·多webview互访
mascon1 小时前
U3D打包IOS的自我总结
ios
名字不要太长 像我这样就好1 小时前
【iOS】继承链
macos·ios·cocoa
karshey2 小时前
【IOS webview】IOS13不支持svelte 样式嵌套
ios
潜龙95272 小时前
第4.3节 iOS App生成追溯关系
macos·ios·cocoa
joe023510 小时前
电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
windows·gpt·电脑·uefi
前端 贾公子10 小时前
vue-cli 模式下安装 uni-ui
前端·javascript·windows
游戏开发爱好者811 小时前
iOS App 电池消耗管理与优化 提升用户体验的完整指南
android·ios·小程序·https·uni-app·iphone·webview
Elastic 中国社区官方博客11 小时前
在 Windows 上使用 Docker 运行 Elastic Open Crawler
大数据·windows·爬虫·elasticsearch·搜索引擎·docker·容器
CIAS14 小时前
clonezilla 导出自动化恢复iso
linux·windows·clonezilla