应用场景
和定位一个元素相同,但如果想要批量的获取某个相同特征的元素,使用定位一组元素的方式更加方便
在 Appium 中定位一组元素的 API 与定位单个元素的 API 类似,但它们返回的是一个元素列表(List<MobileElement>
)而不是单个元素。以下是用于定位一组元素的常用 API 方法及其示例:
通过 ID 定位一组元素
使用 findElementsById
方法,通过元素的 resource-id
定位一组元素:
List<MobileElement> elementsById = driver.findElementsById("com.example:id/button");
for (MobileElement element : elementsById) {
element.click(); // 对每个元素执行操作
}
通过 XPath 定位一组元素
使用 findElementsByXPath
方法,通过 XPath 表达式定位一组元素:
List<MobileElement> elementsByXPath = driver.findElementsByXPath("//*[@text='Login']");
for (MobileElement element : elementsByXPath) {
element.click(); // 对每个元素执行操作
}
通过 Accessibility ID 定位一组元素
使用 findElementsByAccessibilityId
方法,通过元素的 content-desc
属性定位一组元素:
java复制
List<MobileElement> elementsByAccessibilityId = driver.findElementsByAccessibilityId("Login Button");
for (MobileElement element : elementsByAccessibilityId) {
element.click(); // 对每个元素执行操作
}
使用 MobileBy 定位一组元素
Appium 提供了 MobileBy
类,可以使用更通用的方式定位一组元素:
import io.appium.java_client.MobileBy;
List<MobileElement> elementsByMobileBy = driver.findElementsByMobileBy(MobileBy.id("com.example:id/button"));
for (MobileElement element : elementsByMobileBy) {
element.click(); // 对每个元素执行操作
}
通过名称定位一组元素
使用 findElementsByName
方法,通过元素的 text
属性定位一组元素:
List<MobileElement> elementsByName = driver.findElementsByName("Login");
for (MobileElement element : elementsByName) {
element.click(); // 对每个元素执行操作
}
通过类名定位一组元素
使用 findElementsByClassName
方法,通过元素的类名定位一组元素:
List<MobileElement> elementsByClassName = driver.findElementsByClassName("android.widget.Button");
for (MobileElement element : elementsByClassName) {
element.click(); // 对每个元素执行操作
}
通过 Tag Name 定位一组元素
使用 findElementsByTagName
方法,通过元素的标签名定位一组元素:
List<MobileElement> elementsByTagName = driver.findElementsByTagName("Button");
for (MobileElement element : elementsByTagName) {
element.click(); // 对每个元素执行操作
}
通过 CSS Selector 定位一组元素
使用 findElementsByCssSelector
方法,通过 CSS 选择器定位一组元素:
List<MobileElement> elementsByCssSelector = driver.findElementsByCssSelector("android.widget.Button[text='Login']");
for (MobileElement element : elementsByCssSelector) {
element.click(); // 对每个元素执行操作
}
在这些示例中,我们遍历了返回的元素列表,并对每个元素执行了点击操作。您可以根据需要替换这些操作。这些方法可以帮助您在 Appium 中定位和操作移动应用中的一组元素。
概念:
如果通过一组的方式进行定位,获取的返回值不再是一个元素。而是一个列表,列表中装着所有符合这个特征的元素