Appium Win 下成功 Appium+iOS 自动化

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

本人 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 条回复 时间 点赞

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

布吉岛 回复

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

tidevice 这个事什么呀

阿三 回复

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

阿三 回复

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

布吉岛 回复

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

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

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

阿三 回复

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


请问这种情况怎么处理?

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

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

阿三 #15 · 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.
阿三 #25 · 2021年03月30日 Author
Yu 回复

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

阿三 回复

emmm 这个玩意不稳定,

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

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

阿三 回复

嗯 现在还是用回默认的

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

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

ios 14.2 实验成功,跑 case 正常

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

👍

阿三 回复

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

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

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

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

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

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

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

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

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

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

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

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

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

South 回复

加 -u 呢

哲豪 回复

-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 是否存在指定包名

47楼 已删除
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"
}

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

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

阿三 回复

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

我在使用 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 有问题还是别的问题,有遇到过类似情况吗
补充一个截图:

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

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

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

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

阿三 回复

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

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

把 mini4 换个设备试下。

大家好,咨询个问题,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.
codeskyblue tidevice 开源:不依赖 Xcode 也能启动 WDA 中提及了此贴 06月15日 14:06

这个报错是什么原因啊?

tigerwu 回复

iTunes 没装

Morii 回复

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

感谢,在 windows 上连接成功了

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

单独通过 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)

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

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

akiha 回复

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

黑白君 回复

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

AotingKey 回复

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

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


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

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

阿三 #71 · 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 是你这边提的吗?我遇到差不多的报错,请问哪些依赖没下全啊?怎么重新下载?
本人小白。。。

jamin 回复

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

阿三 回复

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

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

是的,接入 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 设备接入配置文档吗?

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

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

阿三 回复

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

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

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

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

阿三 回复

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

樊杰 回复

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

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

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

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


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

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

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


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

阿三 回复

好的,谢谢大佬,我试试

87楼 已删除
caofeng 回复

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

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

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