Jet Pack Compose应用Appium UiAutomator2 Driver元素定位解决方案
解决Jetpack Compose应用的Appium UiAutomator2元素定位问题
针对基于Jetpack Compose开发的Android应用,常规resource ID定位策略不再适用,开发者已通过testTags定义定位标识,但我不想切换到Espresso Driver,因此采用以下方案解决UiAutomator2 Driver下的元素定位问题:
通过设置disableIdLocatorAutocompletion能力禁用包名自动补全,结合XPath语法定位元素。
实现代码
desiredCapabilities.setCapability("disabledLocatorAutocompletion", true); desiredCapabilities.setCapability("appiumVersion", "2.1.3"); // 该能力从Appium 2.0.6版本开始支持 driver.findElement(By.xpath("//*[@resource-id='primary_button']"));
关键说明
- 选用Appium 2.1.3是因为它是云服务商支持的、首个高于2.0.6的稳定版本,而
disableIdLocatorAutocompletion能力仅在2.0.6及以上版本提供 - 必须使用XPath而非
By.id()定位:直接调用driver.findElement(By.id("primary_button"))无法生效,原因是Appium默认的ID定位策略会自动拼接应用包名,导致无法匹配到Compose元素对应的testTag标识 disableIdLocatorAutocompletion能力正是为解决Compose场景下ID定位的包名自动补全问题而设计的
如果这个方案对你有帮助欢迎使用,也欢迎分享更优的解决方案!
内容的提问来源于stack exchange,提问作者Mikhail Nersesov
相关产品推荐
相关产品推荐

