XCUITest 无法定位 H5 页面中的按钮元素怎么办?
我在用 XCUITest 做 iOS 端自动化测试,App 内嵌了一个 WebView,里面有个提交按钮,但 XCUIElement 总是找不到它。试过 accessibilityIdentifier 和 label 都不行,是不是因为它是 H5 元素?
页面结构大概长这样:
<div class="form">
<button id="submit-btn" data-testid="submit">提交</button>
</div>
我给 button 加了 accessibilityLabel,iOS 原生控件能识别,但 WebView 里的还是抓不到,有啥办法能用 XCUITest 操作这个按钮吗?
试试这么处理:
首先在 HTML 端,把 button 改成这样:
关键在于
role="button"这个属性,它会让 WebView 把这个元素以可访问控件的形式暴露出来。然后在 XCUITest 里这样定位:如果还是不行,可能需要在 iOS 端做点配置。对于 WKWebView,确保 WebView 的
accessibilityElements被正确设置,不过正常情况下加了 role 属性应该就能识别了。另外提醒一下,XCUITest 访问 WebView 元素的时候,App 需要处于可访问状态,而且 WebView 必须完成加载。可以适当加个等待:
如果页面是异步加载的,没等元素出来就去点也会失败。