移动端 UI 测试时元素定位总失败怎么办?
我在用 Appium 做移动端 UI 自动化测试,页面上有个按钮明明在 DOM 里,但脚本一直找不到,试了 xpath 和 accessibility id 都不行,是不是我 HTML 结构有问题?
这是页面上对应的按钮代码:
<div class="action-container">
<button id="submit-btn" aria-label="提交订单">确认支付</button>
</div>
真机测试时肉眼可见这个按钮,但测试脚本执行到点击这一步就报 element not found,卡了好几天了……
我建议你先加个显式等待试试,别直接用findElement。用WebDriverWait配合ExpectedConditions等元素出现再操作,像这样:
如果还不行,试试改用cssSelector定位,有时候比xpath稳:
driver.findElement(By.cssSelector("#submit-btn"))另外注意下是不是在正确的context里(比如有webview的情况要切换context),这个也是常见坑。我之前有一次debug半天发现context没切对,白折腾两小时...
还有种可能是按钮在某个可滚动容器里,需要先滚动到可见区域。Appium的click()必须元素在可视区域才能点中。