在做UI自动化的工作中, 和同事遇到了Visible属性是false的element, 而且经常遇到. 当然我们可以和开发协商, 看能否更改这个属性的值为true, 不然据我尝试下来, 这种element点了是没有任何反应, 当然, 我们的自动化脚本也不会报错. 这个时候, 有时点击了, 我们的自动化脚本还会报错, 我发现可能和enabled这个属性相关, 当然我还没有得出具体结论, 等我得出, 我可能会另外开一篇博客说明.
当然, 这个时候开发不一定帮你改, 1是可能会影响到开发的代码, 2是看你们关系好不好了(当然一般会比较好的吧☺️)
那如何从我们测试自身解决问题呢, 我这里提供一种方法, 我和同事的讨论中, 最后得出的,
public static void tapUnVisible(MobileElement element){
TouchAction tAction = new TouchAction(driver);
int x_position = element.getCenter().x;
int y_position = element.getCenter().y;
tAction.tap(x_position,y_position).perform();
}
虽然这个元素是肉眼不可见, 但他是实际存在于前端代码中, 是isdisplayed, 所以自然首先很好定位到它, 问题的关键是在于怎么点击到, 所以用这种相对坐标的方式, 比较方便, 而且准确, 不会收到分辨率, 屏幕大小(移动端)之类的因素的影响.
我这里appium: java-client用的版本是:6.0.0-BETA5.
当然, 这个版本tap(int x, int y) Deprecated.
use tap(PointOption) instead.
大家需要的可以自行替换重写下, 就是现在都采用类似看起来是链式操作, 各种操作都是, 感觉更好, 更统一. 当然在这里也要感谢我的同事😁