Appium [奇葩问题?] 在 ubuntu18 和 windows10 上分别使用 appium-desktop,结果在 appium inspector 定位到同一个 app 相同页面元素的属性不同?

monster · 2019年11月16日 · 最后由 omeletteWithEgg 回复于 2019年12月04日 · 1757 次阅读

麻烦帮忙看下这个问题
在我家里 ubuntu 上 appium-desktop 使用 inspector 获取 app 的同一个元素 (图中已标出),获取其属性 content-desc 为 “团队任务”,text 属性值为空,可以用 ACCESSIBILITY_ID 去定位。

同样的 app,在公司 windows 电脑上使用 inspector 获取到此元素,获取其属性 text 为 “团队任务”,但 content-desc 属性值为空,可以用 text 去定位。

疑问:为什么在这两系统上 inspector 来分析元素定位,其属性却不同呢?导致我在两端调试时代码不能直接通用。

也查了一些资料,这个疑问困扰了好几天没能搞明白。。。

最佳回复

关于 text 与 content-desc 属性区别,以官方文档为准,我做了一些整理,可以了解下,content-desc 属性相当于 iOS 的 AccessibilityIdentifier 辅助功能标签,Appium 也特意把 Android 的 content-desc 属性与 ACCESSIBILITY_ID 做了关联,可以从 [1][2][3][4] 文章中得知,此目的也是为了统一移动端辅助功能标签名称,所以 text 与 content-desc 并不是相同属性

[1] https://github.com/appium/appium-uiautomator2-server/blob/9a5f19e2f26db1a1faa21530ba2cddefae605410/app/src/main/java/io/appium/uiautomator2/model/UiAutomationElement.java#L179

[2] https://github.com/appium/appium-uiautomator2-server/blob/752a8a8551b7e8cf7050182b826e234c0839a548/app/src/main/java/io/appium/uiautomator2/handler/FindElement.java#L96

[3 ]https://developer.android.com/reference/android/support/test/uiautomator/By

[4]https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/accessibility/AccessibilityNodeInfo.java#2708

共收到 7 条回复 时间 点赞
cmlanche 回复

确实是不同的安卓手机,没考虑过这个的影响。我试试看
另外:text 和 content-description 这两个属性都可以认为是 text,试了下这个确实可以换着用。

可能有类似 android sdk 版本或者其他判断条件,可以向研发了解下这里的逻辑,最后你可以发下不同系统的 android 配置环境信息和 appium 版本配置,如果有差别,可以统一环境配置,重新验证一次

  1. 是同样的手机吗?手机 android 版本差异多大?uiautomator 在不同手机上不同 rom 下表现会不一样
  2. text 和 content-description 这两个属性都可以认为是 text
ltyd5788 回复

我看了 appium-inspector 解析 app 后的 xml 结构,跟我在 windows 上查看时解析出来的 xml 结构不同,回到家我先统下版本试试。

自己搞个云服务器就不用家里公司都可以玩 很方便的,比较方便 学生级别的 100 来块https://cloud.tencent.com/act/cps/redirect?fromSource=gwzcw.3018172.3018172.3018172&redirect=10140&cps_key=1941cbd3d7c4cd819b0d6629831ba208&from=activity

关于 text 与 content-desc 属性区别,以官方文档为准,我做了一些整理,可以了解下,content-desc 属性相当于 iOS 的 AccessibilityIdentifier 辅助功能标签,Appium 也特意把 Android 的 content-desc 属性与 ACCESSIBILITY_ID 做了关联,可以从 [1][2][3][4] 文章中得知,此目的也是为了统一移动端辅助功能标签名称,所以 text 与 content-desc 并不是相同属性

[1] https://github.com/appium/appium-uiautomator2-server/blob/9a5f19e2f26db1a1faa21530ba2cddefae605410/app/src/main/java/io/appium/uiautomator2/model/UiAutomationElement.java#L179

[2] https://github.com/appium/appium-uiautomator2-server/blob/752a8a8551b7e8cf7050182b826e234c0839a548/app/src/main/java/io/appium/uiautomator2/handler/FindElement.java#L96

[3 ]https://developer.android.com/reference/android/support/test/uiautomator/By

[4]https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/accessibility/AccessibilityNodeInfo.java#2708

我也遇到这个问题了,看了其他帖子说是 webview 版本不一致导致的?至今也没找到解决方法

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