Appium Win 下成功 Appium+iOS 自动化

阿三 · 2021年03月25日 · 最后由 zZzwen 回复于 2024年01月15日 · 19651 次阅读

本人 win 环境:

Appium 客户端 V1.20.2(注意升级最新版本!!低于该版本可能有问题)
tideviceV0.3.3(参考资料:https://testerhome.com/topics/27758
iOS 设备 iPhone7(12.4.1)已安装上 wda
iTunesV12.11

操作步骤

1.Appium 客户端到官网下载安装即可

2.tidevice 安装
该工具是用 Python 写的,依赖 Python3.6+
命令安装方法
pip3 install -U tidevice
命令验证是否安装成功:(有版本信息返回即正常)
tidevice -v

3.插上 iOS 设备
命令查看所有连接上的设备命令(有设备 udid 信息返回即正常)
tidevice list

查看个人设备上已安装 wda 的 bundleId
tidevice applist

4.命令启动 wda
tidevice -u(设备 udid)wdaproxy -B(wda 的 bundleId) --port 8100
例:

正常情况

访问:http://127.0.0.1:8100/status
有返回设备信息即正常

  1. appium 自动化脚本启动配置如下,即可
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 87 条回复 时间 点赞

很赞呀,加个精让更多有需要在 windows 下跑 ios 自动化的同学看到。从评论看,appium 版本是有一定要求的,建议正文里强调一下这个点?

@codeskyblue tidevice 的 readme 里可以考虑加上这个,引导有需要的同学过来这里了解详细步骤?

想问一下我点连接后 appium 直接闪退了可能时什么原因呢,Appium 客户端 V1.20.2 是指 server 的版本还是 desktop 的版本呢

阿三 回复

按照你说的还是不行

jamin 回复

依赖下全命令:进入本项目目录,执行 cnpm install 或者 npm install(有时网络问题等,下载有失败情况导致下载不全)下载完成的文件都在 node_modules 里,我的本地已经运行成功的完整版本直接给你(包含 node_modules)node-V17.9.0
网盘:链接:https://pan.baidu.com/s/1ZIynDSTTLBo77g9Q64rVJw?pwd=bi7a 提取码:bi7a

布吉岛 回复

不是大佬, wda 是 WebDriverAgent, wda 可以打包成.ipa 文件,(包直接发出来也没用,要重签名才能安装到自己的设备)😂

tidevice 这个事什么呀

阿三 回复

我用的是 tidevice+airtest+wda,感觉比较好用,但是 wda 需要用 mac 的 xcode 编译到手机上,感觉还是脱离不了 mac 呀

阿三 回复

现在 tidevice 项目里面的 WebDriverAgent.ipa 好像也去掉了,我之前也重签过老是失败!你试过重签吗?

阿三 #10 · 2021年03月26日 Author
布吉岛 回复

airtest 我试过也是可以,看个人。 tidevice 官方已说 wda 已安装到手机就可以脱离 Mac,我觉得,如果完全没有 Mac 的用户,可以装 Mac 虚拟机/让有 Mac 的开发,帮忙装下 wda, 其实只要装一次,基本后面就不会再需要 Mac.

阿三 #11 · 2021年03月26日 Author
布吉岛 回复

WebDriverAgent.ipa 在早期版本里,我昨天还下载过,重签我是直接用 WebDriverAgent 源码项目找开发,帮忙安装 wda 的,也很快。

阿三 回复

是的!我看过 0.1.3 之前是有 WebDriverAgent.ipa 的,我也是用 WebDriverAgent 源代码运行到手机上,但老想搞成 ipa 完全脱离 mac 电脑


请问这种情况怎么处理?

阿三 #15 · 2021年03月26日 Author
布吉岛 回复

安装 wad,这步目前无法脱离 Mac,即使要 ipa 重签名,用重签名工具也是 Mac 工具

阿三 #16 · 2021年03月26日 Author
Morii 回复

这个报错加 webDriverAgentUrl 参数解决,要填写具体 IP

阿三 #17 · 2021年03月26日 Author
Morii 回复

如果其他环境配置跟我一致,唯一区别就是设备的版本,我是 12.4.1,你高版本的 14.2 我没试过,你先换低版本设备试下

试了一下,切实可以,楼主牛啊

{
  "automationName": "XCUITest",
  "platformName": "iOS",
  "platformVersion": "",
  "deviceName": "iPhone 12 Pro",
  "bundleId": "",
  "udid": "",
  "newCommandTimeout": "3600",
  "skipLogCapture": "true",
  "webDriverAgentUrl": "http://localhost:8100",
  "usePrebuiltWDA": "true",
  "useXctestrunFile": "false"
}

Error: connect ENOENT /var/run/usbmuxd ,想问下报错这个是啥意思咋解决

阿三 #20 · 2021年03月30日 Author
回复

升级 appium 到 V1.20.2 版本,

阿三 #21 · 2021年03月30日 Author
Yu 回复

都是前人栽树,我们是乘凉的人😂

阿三 回复

已搞定

阿三 #23 · 2021年03月30日 Author
回复

😂

阿三 回复

不稳定,执行的时候挂了

remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Unable to start WebDriverAgent session because of xcodebuild failure: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: read ECONNRESET Make sure you follow the tutorial at https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md. Try to remove the WebDriverAgentRunner application from the device if it is installed and reboot the device.
阿三 回复

emmm 这个玩意不稳定,

阿三 #26 · 2021年03月30日 Author
Yu 回复

稳定性,我后续跟进下,看我这边是否也遇到跟你一样。有结果会回复

阿三 回复

嗯 现在还是用回默认的

阿三 #28 · 2021年03月30日 Author
Yu 回复

我目前使用没有发现不稳定/提示 WebDriverAgentRunner 要重装。 从 wda 提示要重装,个人猜测是不是安装 wda 证书问题 (我是用企业证书)

ios 14.2 实验成功,跑 case 正常

阿三 #30 · 2021年04月02日 Author
回复

👍

阿三 回复

大佬,求助哇,启动 appium 的时候报 Session has been terminated,会话已终止。appium 和 tidevice 版本跟您一样,我的是 iphone6,12.4.8 版本,appium 配置一致,使用真实 IP,命令启动 wda 也成功😂 不知道怎么搞了。

问下楼主,我找开发安装时,schema 选择 WebDriverAgentRunner 后,开发说无法编译安装,如下截图:

阿三 #33 · 2021年04月06日 Author
德子 回复

1 访问:http://127.0.0.1:8100/status 若有设备信息返回值,操作 2
2

阿三 #34 · 2021年04月06日 Author
陈恒捷 回复

收到!已采纳建议,调整帖子内容

阿三 #35 · 2021年04月06日 Author
liuau86 回复

1.确定选择了运行证书后,操作 2
2 修改 Bundle ID(可任意取/自己已申请过的 Bundle ID)
3,运行

阿三 #36 · 2021年04月06日 Author
liuau86 回复

在运行 WebDriverAgentRunner 前提,必须更新 WebDriverAgent 依赖,操作如下
切换到 appium-webdriveragent 目录,执行 sh ./Scripts/bootstrap.sh 命令

只支持一个设备嘛?如果插入多台设备执行 tidevice wdaproxy -B 会提示 More then 2 devices detected。设备比较多又不想每台设备都启动一个代理

哲豪 回复

-u 是指定特定设备,设备有点多每一个设备都指定并开启一端口有点麻烦。

South 回复

tidevice -u UDID xctest -B com.facebook.wda.WebDriverAgent.Runner -e USB_PORT:8200
这样?

有哪位大佬遇到过 这个 问题
Failed to create WDA session (An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: connect ETIMEDOUT 192.168.0.107:8100). Retrying...

浏览器可以正常访问,appium 启动 连不上一直

我这里也遇到了 请问下你 webDriverAgentUrl 的 IP 怎么获取的

我是 mac 下面驱动的。appium 驱动 wda,从 iOS14 系统里启动 app 后,是超级慢,根本不能用。。

润安 回复

wda 启动 app,如果慢的话,请确认手机 app 是否存在指定包名

cmlanche 回复

不是哈,app 已驱动起来了。确认应该跟 app 有关,其他 app 没有问题。。

终于跑通了,不知道为啥楼主没配置"automationName": "XCUITest"这个参数怎么可以执行的,我的启动参数完整版配置如下,原文参考:https://sutune.me/2021/04/20/tidevice/

{
"udid": "6dd5e55bf4204cd5ad8042dc4ecb2xxxxxx",
"automationName": "XCUITest",
"deviceName": "iphone8",
"platformName": "iOS",
"platforVersion": "12.1.2",
"bundleId": "com.hxxxxx",
"webDriverAgentUrl": "http://localhost:8200",
"usePrebuiltWDA": "true",
"useXctestrunFile": "false",
"skipLogCapture": "true",
"automationName": "XCUITest"
}

阿三 #46 · 2021年04月20日 Author

是的,确实我没有配置 automationName 也可以运行成功(本人测试过),其他人也是有成功情况。我还是建议加 automationName 参数。感谢分享链接

阿三 回复

我已经设置为不同的端口了,刚刚尝试跑单个机器,也有一样的问题,6s 这个情况少,mini4 就经常发生

阿三 #48 · 2021年04月25日 Author
菱角 回复

我这边还是可运行测试。你问题我没有碰到。不好提供解决方案

我在使用 tidevice 执行 3 台并行的时候,运行一段时间,会出现这样的错误:
1,[D 210425 17:06:40 _wdaproxy:91] [udid] WDA is not response, check again after 10s
2,connect to device error: UsbmuxReplyCode.ConnectionRefused
3,selenium.common.exceptions.InvalidSessionIdException: Message: Session does not exist
请问这是我安装的 webdriveragent 有问题还是别的问题,有遇到过类似情况吗
补充一个截图:

阿三 #50 · 2021年04月25日 Author
akiha 回复

并行测试时,每台设备对应 wda 端口和 systemPort 端口要取不一样的。

阿三 #51 · 2021年04月26日 Author
akiha 回复

把 mini4 换个设备试下。

codeskyblue tidevice 开源:不依赖 Xcode 也能启动 WDA 中提及了此贴 06月15日 14:06

大家好,咨询个问题,windows 下面执行 tidevice+appium 报如下错误,各位大佬麻烦帮忙解决下:

环境

  1. window10 系统
  2. appium_desktop V1.21.0 版本

appium server 的日志

[debug] [35m[XCUITest][39m UnknownError: An unknown server-side error occurred while processing the command. Original error: 'bundleId' desired capability not provided
[debug] [35m[XCUITest][39m     at errorFromMJSONWPStatusCode (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:767:10)
[debug] [35m[XCUITest][39m     at ProxyRequestError.getActualError (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:661:14)
[debug] [35m[XCUITest][39m     at JWProxy.command (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:272:19)
[debug] [35m[XCUITest][39m     at processTicksAndRejections (internal/process/task_queues.js:85:5)
[debug] [35m[XCUITest][39m Unable to start WebDriverAgent session because of xcodebuild failure: An unknown server-side error occurred while processing the command. Original error: 'bundleId' desired capability not provided Make sure you follow the tutorial at https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md. Try to remove the WebDriverAgentRunner application from the device if it is installed and reboot the device.

这个报错是什么原因啊?

tigerwu 回复

iTunes 没装

Morii 回复

你好,你的这个问题解决了吗?我现在卡在这里了😂 😓

我在进行多设备操作的时候,出现了前面有人提到过的报错,截图如下,是在找不到解决方案,借楼问一下:

单独通过 tidevice -u 00008030-00xxxxxxxxxxx wdaproxy --port 9302 来启动就是正常的。
代码里我是通过 cmd 模式来启动命令:

def start_wdaproxy(udid='', local_port=8100):
    cmd = "tidevice -u " + udid + " wdaproxy --port " + str(local_port)
    logger.info("当前cmd是: {}", cmd)
    os.popen(cmd)

想问下大佬们该怎么处理?

akiha 回复

你好,请问解决了吗?我也遇到相同的问题

黑白君 回复

这个问题解决了?我也遇到了同样的问题

AotingKey 回复

后面正常了,时间久远不太记得是怎么改的了,总之是多线程换了多进程。

62楼 已删除
阿三 回复

老哥,看了你之前 sjk_swiftmonkey 的帖子,问你一个问题哈,你现在还跑得起来吗,我这边运行一直不成功,bundleIdentifier 都修改了,运行起了 sjk-monkey 程序(没有任何报错),但是整个屏幕黑红两块,待测的 app 也没有启动,可以看看吗~

感谢,在 windows 上连接成功了

想请问一下这个问题是怎么解决的呀


请教下虽然启动成功,也可以连接进行自动化了,但出现上图这个异常,可有见过?

就是想问一下,我在 yaml 文件里面配置的这些,然后 代码 是和安卓自动化测试一样吗,用 unittest 框架,然后 通过 uiautomatorviewer 还是 appium 定位去书写代码嘛

阿三 #68 · 2023年02月23日 Author
lewis-csk 回复

appium

阿三 回复

嗯呢,基本操作都是一样的哈

报错,xcrun 大佬 请看一下,我是 win 系统,到这就过不去了,麻烦了麻烦了



http://127.0.0.1:8100/status这个网页可以打开

大佬,最近 2 天安装 https://github.com/EasilyTest/stf 遇到里面 Issue1 的问题,
Issue1 https://github.com/EasilyTest/stf/issues/1 是你这边提的吗?我遇到差不多的报错,请问哪些依赖没下全啊?怎么重新下载?
本人小白。。。

阿三 #72 · 2023年03月22日 Author
jamin 回复

是的,接入 iOS 设备是用 macOS 系统

阿三 回复

谢谢大佬,前天 cnpm install 部署好了,是在 Ubuntu Server 18.04 下,安卓多控正常使用,但 iPhone 设备检测不到,排查到问题是 ios-provider 的进程没成功启动,mrx1203/stf 作者说这个 ios-provider 只能在 macOS 下启动,你这边是什么系统下接入 iOS 设备的啊?是 macOS 吗?

阿三 回复

这 2 天在 macOS Ventura 13.2 下重新部署了 https://github.com/EasilyTest/stf
ios-provider 进程能成功启动了,但又遇到了新的报错。。。

2023-04-06T07:49:07.644Z INF/ios-device:plugins:display 6525 [d198b1b24c9e0b5748f044b81abbd618278e09ec] Reading display info
dyld[6525]: missing symbol called

不知道怎么查了。不知道缺什么依赖还是系统哪里不兼容?

主要是上面项目中关于接入 iOS 设备的描述不太详细。

其中第 4 步说明如下:

  1. 需使用 ios 接入,配置 WebDriverAgent,clone 代码,clone 完毕后进入目录,执行./Scripts/bootstrap.sh 下载 wda 所需依赖库 安装 xcode(版本< 10.3),运行 WebDriverAgent

这步操作主要是构建安装到 iPhone 的 WebDriverAgent 吗?
我手机上已经安装了开发提供的签名过的 wda 了,这步不需要做了吧?

大佬有详细一点的 iOS 设备接入配置文档吗?

阿三 #75 · 2023年04月07日 Author

这步操作主要是构建安装到 iPhone 的 WebDriverAgent 吗?:是的,是有版本兼容问题需要注意,
苹果手机系统也不要当前最新的,建议:你这个是 STF 群控版,新手可以先搭建,STF 单控的 - 支持 iOS 版本,搭建成功再搭建群控版顺手多,单控至少有问题还有些资料查。我好久没碰这个 STF 了,只能给这点建议。

阿三 回复

谢谢大佬,暂时先不弄这个 STF 了,没看到怎么更新,相关资料太少了,对新手不太友好。
今天部署了一下 Sonic 单控 iOS 比较顺利,但群控功能作者好像说不开发了,得自己想办法二次开发了。。。😐
新手也难搞。。

阿三 回复

1.手动操作同样的步骤没有闪退,用爱思助手查看实时日志,导出后搜索,crash 没有搜到相关日志
2.个操作间加了等待时间就可以正常执行了,但不是很明白,为啥加了等待时长之后就可以正常执行,没加之前就会出现闪退的情况呢
不过总之问题已解决,感谢楼主~

樊杰 回复

我之前也遇到过这个问题,当时 appium-server 版本是 1.15,后面换成 1.20 的版本,就好了,没有闪退了

阿三 #79 · 2023年04月18日 Author
troubl_2014 回复

不加延迟,点击太快,页面加载还没完成或者元素准备还没好,就操作下一步,会导致异常。所以加延迟就正常运行了
Appium 使用"隐式等待"机制来等待元素加载和操作完成,可以了解下

阿三 #80 · 2023年04月18日 Author
troubl_2014 回复

1 有可能真的 APP 有问题崩溃手动操作确定:https://www.cnblogs.com/shenxiaolin/p/16326258.html
2.启动和每个操作间加延迟,如 5 秒

window 环境下 ios appium 相关环境已部署好了,也可以执行起来了,但是执行过程中会出现执行 APP 闪退,请问这个是什么问题导致的,如何解决呢,报错日志:ios appium The application under test with bundle id is not running, possibly crashed

手机启动 WebDriverAgent 后,执行程序一段时间后,手机会发烫,而且长时间跑 APP,APP 会崩溃退出,有人遇到这样的情况吗,求解


大佬,请问一直报 request error: ('Connection aborted.', MuxReplyError()),怎么解决?

阿三 #89 · 2023年10月27日 Author
caofeng 回复

很久没关注相关了,猜测解决思路,wda 启动失败,我之前正常启动的 wda 的 bundleId 格式和你的后缀格式有差异,对比下


试下这里的 wda 项目https://github.com/appium/WebDriverAgent

阿三 回复

好的,谢谢大佬,我试试

91楼 已删除
caofeng 回复

大佬,你的问题解决了吗?我也出现了这个问题 tidevice 启动 wda 报错 UsbmuxReplyCode.ConnectionRefused,我的 BundleID 是 com.facebook.WebDriverAgentRunner.xctrunner.UF8XUZ8UX9,不知道是不是后缀格式问题

@Morii 大佬 我遇到一样的问题,请问你是怎么解决的

90楼 已删除
South 回复

加 -u 呢

92楼 已删除
阿三 #93 · 2021年03月30日 Author
Yu 回复

已安装 WebDriverAgentRunner 应用程序,尝试从设备中删除,然后重新启动设备。

阿三 #94 · 2021年03月25日 Author

😃

大佬 wda 是 WebDriverAgent 吗?,,wda 可以打包成.ipa 文件吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册