2026/4/17 13:13:39
网站建设
项目流程
网站建设比较好的律所,手机购物网站 建站,360建筑网登录,吉林建设集团网站你提供的这段代码是基于 Appium 框架封装的 Android 移动端自动化测试核心操作类#xff0c;命名为 AndroidEncapsulateOperation#xff0c;它把 Appium 原生的零散操作#xff08;如点击、滑动、长按、键盘模拟等#xff09;封装成了标准化、可配置的方法#xff0c;方便…你提供的这段代码是基于 Appium 框架封装的Android 移动端自动化测试核心操作类命名为AndroidEncapsulateOperation它把 Appium 原生的零散操作如点击、滑动、长按、键盘模拟等封装成了标准化、可配置的方法方便在自动化测试脚本中直接调用。下面我会从整体功能、核心模块、关键逻辑、使用场景四个维度帮你完整解析。一、整体功能总结这个类的核心目标是将 Appium 对 Android 元素/页面的原生操作抽象成高内聚、低耦合的工具方法对外暴露统一的调用入口支持通过“操作关键字参数”的方式执行不同的自动化动作同时内置日志记录和异常提示提升自动化脚本的可维护性和可读性。二、核心模块拆解整个类分为 5 个核心方法每个方法负责一类操作下面逐一对每个方法解析1. selectOperation下拉框Select控件专属操作publicstaticStringselectOperation(AndroidElementae,Stringoperation,StringoperationValue)作用专门处理 Android 页面中的下拉选择框Select 控件操作封装了原生 Select 类的核心方法。参数说明ae目标下拉框元素AndroidElement 类型operation操作关键字固定值operationValue操作参数如下拉选项的文本/值/索引。支持的操作关键字关键字作用示例参数selectbyvisibletext通过选项可见文本选择“待执行”selectbyvalue通过选项 value 属性选择“0”selectbyindex通过选项索引选择“1”isselect判断元素是否被选中无返回布尔值核心逻辑通过switch-case匹配操作关键字调用对应 Select 方法同时记录日志并返回操作结果描述。2. getOperation元素属性获取操作publicstaticStringgetOperation(AndroidElementae,Stringoperation,Stringvalue)作用获取 Android 元素的各类属性值文本、标签名、自定义属性等是自动化测试中“断言/校验”的核心支撑。参数说明ae目标元素operation属性获取关键字value自定义属性名仅getattribute/getcssvalue需要。支持的操作关键字关键字作用返回示例gettext获取元素显示文本“登录按钮”gettagname获取元素标签名“button”getattribute获取元素自定义属性传 “resource-id” 返回 “com.xxx:id/login_btn”getcssvalue获取元素 CSS 属性H5 页面有效传 “color” 返回 “#ffffff”核心逻辑通过switch-case匹配关键字调用元素的属性获取方法拼接结果描述并返回同时记录日志。3. objectOperation元素AndroidElement通用操作publicstaticStringobjectOperation(AndroidDriverAndroidElementappium,AndroidElementae,Stringoperation,StringoperationValue,Stringproperty,StringpropertyValue)作用处理单个 Android 元素的基础交互操作点击、输入、清空、长按等是自动化测试中最常用的核心方法。参数说明appiumAndroidDriver 实例驱动核心ae目标元素operation元素操作关键字operationValue操作参数如输入文本、长按时长property元素定位属性如 “id”/“xpath”propertyValue元素定位值如 “com.xxx:id/input”。支持的操作关键字核心关键字作用示例参数click点击元素无sendkeys向输入框输入文本“13800138000”clear清空输入框内容无isenabled判断元素是否可用无返回 true/falseisdisplayed判断元素是否可见无返回 true/falseexjsob对元素执行 JS 脚本“arguments[0].click()”longpresselement长按元素“3”长按3秒关键逻辑长按操作longpresselement通过AndroidTouchAction构建长按动作支持自定义长按时长默认无时长传数字则转换为 Duration所有操作都会返回“操作结果描述字符串”并通过LogUtil记录详细日志包含定位属性值方便调试。4. alertOperation弹窗Alert操作publicstaticStringalertOperation(AndroidDriverAndroidElementappium,Stringoperation)作用处理 Android 页面的系统弹窗如权限提示、确认框封装了原生 Alert 类的操作。参数说明appiumAndroidDriver 实例operation弹窗操作关键字。支持的操作关键字关键字作用alertaccept确认弹窗点击“确定”/“允许”alertdismiss关闭弹窗点击“取消”/“拒绝”alertgettext获取弹窗文本内容核心逻辑先通过appium.switchTo().alert()切换到弹窗上下文再执行对应操作适合处理系统级原生弹窗注意自定义弹窗需用元素定位操作。5. driverOperation驱动/页面级全局操作publicstaticStringdriverOperation(AndroidDriverAndroidElementappium,Stringoperation,StringoperationValue)throwsException作用处理针对整个 Android 页面/驱动的全局操作滑动、键盘模拟、截图、切换上下文等是自动化测试中处理“页面交互”的核心方法。参数说明appiumAndroidDriver 实例operation全局操作关键字operationValue操作参数如滑动时长次数、坐标等。核心子模块拆解1上下文Context操作混合应用必备关键字作用示例参数getcontexthandles获取所有上下文句柄“1”返回第1个句柄gotocontext切换上下文原生/H5“WEBVIEW_com.xxx”getcontext获取当前上下文无场景Android 混合应用原生H5中需切换到 WEBVIEW 上下文才能操作 H5 元素。2滑动操作移动端最常用支持 8 种滑动关键字swipeup/swipedown/swipeleft/swiperightswipepageup/swipepagedown/...逻辑完全一致仅滑动方向不同参数格式时长|次数如 “2|3” 表示每次滑动持续2秒滑动3次核心调用AndroidBaseAppium工具类的滑动方法如swipePageDown封装了 Appium 原生的滑动逻辑。3坐标交互操作关键字作用示例参数longpressxy长按指定坐标100pressxy点击指定坐标100tapxy轻击指定坐标100moveto拖动多坐标点100,200关键逻辑通过AndroidTouchAction的press/moveTo/tap方法实现坐标级操作支持多段拖动moveto适配不同滑动场景。4其他核心操作关键字作用示例参数androidkeycode模拟手机键盘“ENTER”回车/ “BACK”返回hidekeyboard隐藏手机软键盘无exAdbShell执行 ADB 命令“adb shell input text 123456”timeout设置全局等待时间“30”元素等待30秒screenshot截取当前屏幕无自动生成带时间戳的截图名exjs执行全局 JS 脚本“window.scrollTo(0,100)”三、关键细节与注意事项日志体系所有操作都通过LogUtil.APP.info()记录详细日志包含操作类型、参数、结果方便自动化脚本调试和问题定位。参数校验核心操作如滑动、坐标点击都会先校验参数是否为数字若参数非法则返回明确的错误描述如“swipeup参数判断时间出现异常”。兼容性处理moveto方法中处理了 Appium API 的“坐标偏移”问题单段拖动用绝对坐标多段拖动用相对偏移longpresselement支持自定义时长默认无时长适配不同应用的长按触发逻辑。依赖类代码中依赖了多个自定义工具类需确保这些类存在才能运行AndroidBaseAppium封装了滑动、截图等底层方法ChangString提供数字校验等字符串工具LogUtil日志工具cn.hutool.core.util.StrUtilHutool 字符串工具判断参数非空。四、使用场景示例下面是一个典型的调用示例展示如何用这个类执行“登录操作”// 1. 初始化 AndroidDriver省略驱动配置AndroidDriverAndroidElementappiumnewAndroidDriver(newURL(http://127.0.0.1:4723/wd/hub),desiredCapabilities);// 2. 定位手机号输入框AndroidElementphoneInputappium.findElement(By.id(com.xxx:id/phone_input));// 输入手机号AndroidEncapsulateOperation.objectOperation(appium,phoneInput,sendkeys,13800138000,id,com.xxx:id/phone_input);// 3. 定位密码输入框AndroidElementpwdInputappium.findElement(By.id(com.xxx:id/pwd_input));// 输入密码AndroidEncapsulateOperation.objectOperation(appium,pwdInput,sendkeys,123456,id,com.xxx:id/pwd_input);// 4. 定位登录按钮AndroidElementloginBtnappium.findElement(By.id(com.xxx:id/login_btn));// 点击登录AndroidEncapsulateOperation.objectOperation(appium,loginBtn,click,,id,com.xxx:id/login_btn);// 5. 滑动页面查找“我的”入口AndroidEncapsulateOperation.driverOperation(appium,swipeup,2|1);// 6. 截图保存AndroidEncapsulateOperation.driverOperation(appium,screenshot,);总结核心定位这是一套“面向关键字驱动”的 Android 自动化测试封装把 Appium 原生 API 转化为“关键字参数”的调用方式适合构建可配置的自动化测试框架核心优势标准化所有操作返回统一格式的结果描述日志记录规范易用性无需记忆 Appium 原生 API通过关键字即可调用所有核心操作健壮性内置参数校验和异常提示降低脚本崩溃概率适用场景Android 原生/混合应用的自动化测试脚本开发尤其适合需要批量编写测试用例、强调可维护性的场景。