iOS10.x value 显示 AX Error 这是 Apple 方面引入的问题,可以尝试升级为 Xcode11 看看该问题得到解决了么
本地安装 Xcode11,需要确保 XCTestWD 是最新版本,重新到 Git 仓库里下个最新的吧,在试试看,还不行的话可以把设备信息一起发出来
desired capability 设置 autoWebview 属性为 true 看看
看看非 WebView 页面使用 xpath 可以定位到元素么,还有当前页面的其他元素试试看能定位到元素么。"查找元素前,调用 pagesource 方法看下页面一致性" 这里贴出日志提示会更好
find_element 查找元素前,调用 pagesource 方法看下页面一致性,适当的使用 WebDriverWait(driver, 20).until 是可以确保页面一致性的
试试 Appium,可以先看下面两篇链接的 readme,如果想用原生开发语言写自动化或者更为轻量的实现可以基于 appium-for-mac 来实现
[1] https://github.com/appium/appium-mac-driver
[2] https://github.com/appium/appium-for-mac
只是为了获取元素信息可以使用 Xcode 集成的 Accessibility Inspector 具有可视化界面工具,路径:/Applications/Xcode.app/Contents/Applications/Accessibility\ Inspector.app
从 [1] 提示中看,你用的是 xcode 至少是 xcode10.2 版本,而你调试用的 WDA 估计是从 facebook 废弃的 WDA 仓库里下载的或者是旧版的 Appium,由于缺少维护,从 Xcode10.2 开始已不适用,主要是 Apple 从 Xcode10.2 版本开始废弃 XCAXClient_iOS 类。 仍然想用当前版本 WDA 可以尝试把 Xcode 降为 10.1 版本,或者直接更新 Appium 版本使用最新 WDA,如果还有问题可以列出日志和提供 xcode 版本信息,以便更好的排查问题
[1]+[XCAXClient_iOS sharedClient]: unrecognized selector sent to class 0x1002cc130\n\n(\n\t0 CoreFoundation 0x000000018b5caff8 + 148\n\t1 libobjc.A.dylib
关于 text 与 content-desc 属性区别,以官方文档为准,我做了一些整理,可以了解下,content-desc 属性相当于 iOS 的 AccessibilityIdentifier 辅助功能标签,Appium 也特意把 Android 的 content-desc 属性与 ACCESSIBILITY_ID 做了关联,可以从 [1][2][3][4] 文章中得知,此目的也是为了统一移动端辅助功能标签名称,所以 text 与 content-desc 并不是相同属性
[3 ]https://developer.android.com/reference/android/support/test/uiautomator/By
可能有类似 android sdk 版本或者其他判断条件,可以向研发了解下这里的逻辑,最后你可以发下不同系统的 android 配置环境信息和 appium 版本配置,如果有差别,可以统一环境配置,重新验证一次
统一用 default-capabilities-arg 试试看,指定--udid 的同时为每台设备分配不同的 wdaLocalPort 端口
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/default-capabilities-arg.md
https://github.com/appium/appium-xcuitest-driver/
太强了👍
sys._current_frames().items() 搜下用法
我也只能提供问题的原因以及解决的思路,剩下遇到的问题只能 google 了吧,试试这个路径吧, /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
Appium 从 1.15.0 开始支持 iOS13 的设备,也为 Xcode11 增加了新的快照 elementSnapshotForDebugDescription API,从你提供的日志你用的还是旧版的 WDA,最新的 WDA 已经兼容了这部分逻辑,最快的检查方式是到 WebDriverAgent 全局搜下 XCUIElementQuery.h 文件里看看有无 elementSnapshotForDebugDescription API,更新 Appium 版本或者是 WDA 版本都是可以解决的
WebDriverAgent 版本的问题,到 Appium 的仓库里下载最新 WebDriverAgent 把本地的 WDA 覆盖了,试试看
在同级的布局下,在原先记录的 index 控件前面增加相同类型的控件元素,这样原先记录下 index 会不会发生变化
至少可以打印下滑屏前后的 pageSource 信息、点击的元素前后的坐标信息都打印出来,这样应该就大致看出问题了,最后你在试试不用滑动,先手动滑屏到目标位置,在 click,如果还是点不了,换个 api 转成用坐标位置点击试试看
Android 看样子已经支持了,只要设置 noReset = true 就行了,可以看这里 https://github.com/appium/appium-android-driver/blob/master/lib/driver.js#L363
iOS 可以设置 noreset = false,fullReset = true 在 device.remove(bundleid),前面加行 if (! opts.noReset || opts.fullReset) 就行了,自己定义一个字段实现更好,https://github.com/appium/appium-xcuitest-driver/blob/master/lib/real-device-management.js#L57
从 appium-uiautomator2-server 上看,用/element/elementId/name 端点和/elements/:element_id/attribute/:name 都能获取 content-desc 属性,可以从以下两篇链接得知,只不过访问 /elements/:element_id/attribute/:name 端点用的是 contentDescription 属性,试试改用 contentDescription 属性或者根据 name.md 文档用另外的端点看看能不能拿到这个属性的信息,至于 content-desc 无法精确获取元素的信息,需要给出例子用 uiautomatorviewer 或 adb 对比下提取的信息是否存在,uiautomatorviewer 能显示出对应控件的属性,Appium 都提供了对应的接口访问其属性
先访问 /elements 接口获取查找元素的 elementId,内部会把控件的信息缓存下来,在根据 elementId 访问 /element/:uuid/text 可以获取控件文本信息,其他信息可以看下这个链接里的文档,有代码示例 https://github.com/appium/appium/tree/master/docs/en/commands/element/attributes
前文有提到 App 在支持着 iOS9、iOS10,但是云真机没有这两款设备呢,啥时候能放出这两款设备体验下效果呀
你们一台 mac mini 同时接入 20 台手机,指的是用你们的云真机核心驱动 IRMADeamon 能同时接入 20 台手机么,WDA 确实如你所说,所以才很好奇呀
mac mini 能支持同时接入 20 台手机,是因为仅仅改造了 usbmuxd 取得的收益嘛,想问下没有改造前能接几台