uiautomator1做自动化测试时,界面有多个相同id的控件,怎么将他们每一个都获取到
时间: 2024-02-17 16:05:33 浏览: 24
在 uiautomator1 中,如果界面有多个相同 ID 的控件,可以使用 `findObjects(By.selector())` 方法来获取所有符合条件的控件。
示例代码如下:
```
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject2List list = device.findObjects(By.res("com.example.app:id/button"));
for (UiObject2 button : list) {
// 对每个符合条件的控件进行操作
button.click();
}
```
这段代码将会查找所有 ID 为 `com.example.app:id/button` 的控件,并对每个控件进行点击操作。
相关问题
在adroido上用uiautomator做自动化测试时,界面有多个相同class,怎么获取每一个class的bounds并将他们存入集合
在 uiautomator 中,如果界面上有多个相同 class 的控件,可以使用 `findObjects(By.clazz())` 方法来获取所有符合条件的控件。然后遍历每个控件,获取其 `getBounds()` 方法返回的矩形区域,最后将这些矩形区域存入集合中。
示例代码如下:
```
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiObject2List list = device.findObjects(By.clazz("android.widget.Button"));
List<Rect> boundsList = new ArrayList<>();
for (UiObject2 button : list) {
boundsList.add(button.getVisibleBounds());
}
// 打印所有矩形区域
for (Rect bounds : boundsList) {
Log.d(TAG, "bounds: " + bounds.toString());
}
```
这段代码将会查找所有 class 为 `android.widget.Button` 的控件,并将其矩形区域存入 `boundsList` 集合中,最后打印出所有矩形区域。
uiautomator1做自动化,界面存在多个相同的resourceId,怎么将他们取出来存入集合
可以使用 UiSelector 对象的 `resourceIdMatches(String regex)` 方法来匹配相同的 resourceId,然后通过 UiCollection 对象的 `getChildByDescription(UiSelector selector, String text)` 方法来获取这些匹配的控件并存入集合中。
具体代码如下:
```java
UiSelector selector = new UiSelector().resourceIdMatches("com.example:id/.*");
UiCollection collection = new UiCollection(selector);
int count = collection.getChildCount();
List<UiObject2> objects = new ArrayList<>();
for (int i = 0; i < count; i++) {
UiObject2 obj = collection.getChildByDescription(selector, "");
if (obj != null) {
objects.add(obj);
}
}
```
这样就可以将界面中所有 resourceId 匹配到 "com.example:id/.*" 的控件存入 objects 集合中了。