Appium无法识别IONIC 4开发的iOS应用中的accessibility ID如何解决?
可行解决思路
- 先确认Appium已经正确切换到WebView上下文
默认Appium启动后处于NATIVE_APP原生上下文,只能读取Android原生控件的resource-id,Ionic页面内容都在WebView容器内,需要先调用API切换到对应WebView上下文才能读取HTML标签的属性 - 优先使用
data-testid测试专用属性定位
Ionic组件渲染时可能会过滤部分自定义属性,data-前缀的自定义属性不会被框架修改,稳定性远高于id、name,修改你的组件代码如下:
切换到WebView上下文后,用CSS选择器<ion-segment-button id="internalButton" name="internal_button" data-testid="internal_button_test" aria-label="internalButton">This is a test</ion-segment-button>ion-segment-button[data-testid="internal_button_test"]即可定位到元素 - 处理Shadow DOM隔离问题
Ionic大部分组件默认开启Shadow DOM,常规的DOM定位方法会被隔离,你可以直接通过执行JS脚本的方式直接获取元素:// 示例为Java版Appium调用,其他语言对应修改执行JS的API即可 WebElement button = (WebElement) driver.executeScript("return document.querySelector('ion-segment-button[data-testid=\"internal_button_test\"]')"); - 可以复用现有
aria-label属性临时定位
你当前代码里已经写了aria-label="internalButton",如果暂时不想加新属性,切换到WebView后可以直接用选择器ion-segment-button[aria-label="internalButton"]定位 - 确认Gigafox开启混合应用检测权限
部分云测平台默认关闭WebView内容检测,需要在测试任务配置中打开混合应用元素识别开关,才能正常读取WebView内的标签属性
内容的提问来源于stack exchange,提问作者shivam
相关产品推荐
相关产品推荐

