應用場景
和定位一個元素相同,但如果想要批量的獲取某個相同特征的元素,使用定位一組元素的方式更加方便
在 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 中定位和操作移動應用中的一組元素。
概念:
如果通過一組的方式進行定位,獲取的返回值不再是一個元素。而是一個列表,列表中裝著所有符合這個特征的元素