Appium中元素定位之一组元素定位API

news/2025/3/31 22:30:46/

应用场景

和定位一个元素相同,但如果想要批量的获取某个相同特征的元素,使用定位一组元素的方式更加方便

在 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 中定位和操作移动应用中的一组元素。

概念:

如果通过一组的方式进行定位,获取的返回值不再是一个元素。而是一个列表,列表中装着所有符合这个特征的元素


http://www.ppmy.cn/news/1584079.html

相关文章

蓝桥杯 班级活动

问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名同学&#xff08;n 为偶数&#xff09;&#xff0c;老师想把所有同学进行分组&#xff0c;每两名同学一组。 为了公平&#xff0c;老师给每名同学随机分配了一个 n 以内的正整数作为 id&#xff0c;第 i 名同学的 i…

C#基础学习(八)终章 C#中的结构体

假如你要用数据记录一个人&#xff0c;你觉得要记录些什么&#xff0c;身高&#xff0c;体重&#xff0c;名字等。那两个人呢&#xff0c;他是不是也有这样的特征&#xff0c;那我们是不是就可以用一种数据类型将他们共有的特征提取出来&#xff0c;这就是我们今天讲的结构体。…

智能制造:自动化焊装线的数字化设计

通过建设焊装车间生产线智能制造系统&#xff0c;致力于打造一个智能化、绿色环保的工厂&#xff0c;不仅提高生产效率&#xff0c;还将节能减排与环保理念深入到生产流程的每一环节&#xff0c;推动制造业向更高的智能化与绿色化方向迈进。 项目目标 智能制造及绿色工厂的打造…

大数据分析与挖掘实训室总体介绍

一、实训室建设目的与意义 大数据分析与挖掘实训室的建设旨在满足当前社会对大数据专业人才的迫切需求。随着大数据技术在各个行业的广泛应用&#xff0c;如金融、医疗、电商等领域&#xff0c;企业对具备数据采集、预处理、分析与挖掘以及数据可视化能力的专业人才需求激增。…

(C语言)指针运算 习题练习1.2(压轴难题)

在上一张已经练习了三道习题&#xff0c;小试牛刀了&#xff0c;那么在本章在来几题&#xff0c;练练手。&#xff08;习题三是压轴难题&#xff09; 习题一 int main() {int aa[2][5] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int* ptr1 (int*)(&aa 1);int* ptr2 (int*)…

香港电讯企业托管服务,助企业实现高效IT管理与运营

随着企业数字化转型的加速&#xff0c;IT基础设施的复杂性也随之增加。与此同时&#xff0c;流程保障缺失、混合办公和混合云模式、不断增加的IT需求、人力负担和运营成本的增加&#xff0c;企业如何应对这些挑战&#xff1f;为此&#xff0c;香港电讯推出的企业托管服务&#…

横扫SQL面试——事件流处理(峰值统计)问题

横扫SQL面试 &#x1f4cc; 事件流处理&#xff08;峰值统计&#xff09;问题 “会议室预定冲突怎么查&#xff1f; &#x1f50d; 服务器瞬时负载如何算&#xff1f;&#x1f3a2; 健身房的‘人挤人’高峰究竟出现在几点&#xff1f;&#x1f3c3;‍♂️” 这些看似毫不相干…

【持续集成和持续部署】

大致流程&#xff1a; 提交代码--拉取下来新代码并自动构建与部署--应用接口探活--执行自动化测试--输出自动化测试报告 一、持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff09; 持续集成是一种软件开发实践&#xff0c;开发团队成员频繁地将代码集成到…