自动化测试时发现,安卓中某些浮窗无法通过uiautomator定位。在uiautomatorviewer中查看时,鼠标放置在相应位置会自动穿透过去,定位到下层窗口中的元素。这种情况下就算知道元素id,在自动化脚本中也无法查找到浮窗中的元素。

原因

上述提到的浮窗类型是PopupWindow,后来发现并不是所有的PopupWindow都无法定位,只有在其focusable属性设定为false时才会定位不到。

解决办法

办法1:

既然只要focusable设定为true就可以定位,最好的办法当然是让开发把用到的PopupWindowfocusable设定为true.

办法2:

但是某些情况下由于一些特殊的原因无法修改PopupWindow.focusable,比如我们的APP中有一个PopupWindowfocusable设定为true之后会导致无法通过点击空白处关闭浮窗。这种情况下只能通过UI设计时的位置来确定想要操作的元素的坐标,通过TouchAction对该坐标点进行相应操作。