在adroido上用uiautomator做自动化测试时,不能使用uiautomator2的api,界面有多个相同class,怎么获取每一个class的bounds并将他们存入集合
时间: 2024-02-18 08:58:58 浏览: 92
Android自动化测试--UIAutomator使用
在 uiautomator1 中,如果界面上有多个相同 class 的控件,可以使用 `UiDevice` 对象的 `findObjects()` 方法来获取所有符合条件的控件。然后遍历每个控件,获取其 `getBounds()` 方法返回的矩形区域,最后将这些矩形区域存入集合中。
示例代码如下:
```
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
List<UiObject> buttonList = device.findObjects(new UiSelector().className("android.widget.Button"));
List<Rect> boundsList = new ArrayList<>();
for (UiObject button : buttonList) {
try {
boundsList.add(button.getVisibleBounds());
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
}
}
// 打印所有矩形区域
for (Rect bounds : boundsList) {
Log.d(TAG, "bounds: " + bounds.toString());
}
```
这段代码将会查找所有 class 为 `android.widget.Button` 的控件,并将其矩形区域存入 `boundsList` 集合中,最后打印出所有矩形区域。注意,由于 `getVisibleBounds()` 方法可能会抛出 `UiObjectNotFoundException` 异常,因此需要进行异常处理。
阅读全文