|
|
资讯缩略图:
资讯发布日期:2026-01-06
资讯发布简介:AIWORK软件节点方法无碍示例子
资讯关键词:AIWORK软件节点方法无碍示例子
资讯所属分类:IT资讯
联系:
① 本信息收集于网络,如有不对的地方欢迎联系我纠正! ② 本信息免费收录,不存在价格的问题! ③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!
④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/
资讯详细描述
 | |  |  | AIWORK软件节点方法无碍示例子
- // Android APP自动化核心API修正版 - AIWROK IDE 开发 (ES5 兼容)
- // 节点方法无碍示例子
- // ES5系统安卓 JavaScript引擎Rhino
- // // 🍎交流QQ群711841924群一,苹果内测群,528816639
- // AIWROK IDE 窗口设置
- printl(logWindow.setAlpha(208));
- logWindow.setHeight(2800);
- logWindow.setWidth(2000);
- printl("=== Android APP自动化核心API修正版 ===");
- print.log("=== Android APP自动化核心API修正版 ===");
- // ==================== 1. 基础API测试 ====================
- printl("");
- print.log("=== 1. 基础API测试 ===");
- printl("1.1 设置详细模式并搜索...");
- auto.setDetailedModel();
- var node = auto.nodeSearch(1000);
- printl("详细模式搜索结果节点数:", node != '' ? node.count() : 0);
- print.log("auto.setDetailedModel() + auto.nodeSearch(1000): 完成");
- printl("");
- printl("1.2 获取当前可点击节点...");
- var clickNode = auto.getClickNode();
- printl("当前可点击节点:", clickNode.getDesc());
- print.log("auto.getClickNode(): 完成");
- if (clickNode != '') {
- printl("可点击节点信息:");
- printl(" 文本:", clickNode.getDesc());
- printl(" ID:", clickNode.getID());
- printl(" 类名:", clickNode.getClassName());
- printl(" 边界:", clickNode.getBounds());
- }
- // 正确方式:使用nodeSearch筛选可点击节点
- printl("");
- printl("1.3 搜索所有可点击节点...");
- var allClickable = auto.nodeSearch(1000).clickable(true);
- printl("所有可点击节点数量:", allClickable != '' ? allClickable.count() : 0);
- if (allClickable != '' && allClickable.count() > 0) {
- printl("前3个可点击节点:");
- var displayCount = Math.min(3, allClickable.count());
- for (var i = 0; i < displayCount; i++) {
- var clickElement = allClickable.getNode(i);
- printl(" ", (i + 1), ".", clickElement.getDesc());
- }
- }
- printl("");
- printl("1.4 测试getRooNode...");
- try {
- var rootNode = auto.getRooNode();
- if (rootNode != '' && rootNode != null) {
- printl("getRooNode结果: 成功");
- printl("根节点信息:", rootNode.getDesc());
- } else {
- printl("getRooNode结果: 返回空值");
- }
- } catch (e) {
- printl("getRooNode结果: API不存在");
- printl("错误:", e.toString());
- }
- printl("");
- printl("1.5 页面刷新...");
- auto.refresh();
- printl("页面刷新完成");
- var afterRefresh = auto.nodeSearch(1000);
- printl("刷新后节点数量:", afterRefresh != '' ? afterRefresh.count() : 0);
- printl("");
- printl("1.6 设置简单模式...");
- auto.setSimpleModel();
- var simpleNode = auto.nodeSearch(1000);
- printl("简单模式节点数量:", simpleNode != '' ? simpleNode.count() : 0);
- print.log("auto.setSimpleModel() + auto.nodeSearch(1000): 完成");
- // ==================== 2. 实际应用场景 ====================
- printl("");
- print.log("=== 2. 实际应用场景 ===");
- printl("2.1 文件管理器基础操作...");
- // 切换到详细模式
- auto.setDetailedModel();
- // 查找所有可交互元素
- var interactiveElements = auto.nodeSearch(1000).clickable(true);
- printl("可交互元素总数:", interactiveElements != '' ? interactiveElements.count() : 0);
- if (interactiveElements != '' && interactiveElements.count() > 0) {
- printl("前5个可交互元素:");
- var displayCount = Math.min(5, interactiveElements.count());
- for (var i = 0; i < displayCount; i++) {
- var element = interactiveElements.getNode(i);
- printl(" ", (i + 1), ".", element.getDesc(), " [", element.getID(), "]");
- }
- }
- printl("");
- printl("2.2 查找特定类型的控件...");
- // 查找所有按钮
- var buttonElements = auto.nodeSearch(1000).className("android.widget.Button");
- printl("按钮元素数量:", buttonElements != '' ? buttonElements.count() : 0);
- // 查找所有文本视图
- var textViewElements = auto.nodeSearch(1000).className("android.widget.TextView");
- printl("文本视图数量:", textViewElements != '' ? textViewElements.count() : 0);
- printl("");
- printl("2.3 层级分析...");
- var layoutElements = auto.nodeSearch(1000).classIncludes("Layout");
- if (layoutElements != '' && layoutElements.count() > 0) {
- printl("布局元素分析 (前3个):");
- var displayCount = Math.min(3, layoutElements.count());
- for (var i = 0; i < displayCount; i++) {
- var layout = layoutElements.getNode(i);
- printl(" 布局", (i + 1), ":", layout.getClassName());
- printl(" 深度:", layout.getDepth());
- printl(" 面积:", layout.getArea());
- printl(" 边界:", layout.getBounds());
- }
- }
- // ==================== 3. 实用函数 ====================
- printl("");
- print.log("=== 3. 节点方法详细演示 ===");
- printl("");
- printl("3.1 节点属性获取方法演示...");
- // 获取一个测试节点
- var testElement = auto.nodeSearch(1000).className("android.widget.TextView");
- if (testElement != '' && testElement.count() > 0) {
- var node = testElement.getNode(0);
-
- printl("=== 节点属性获取方法 ===");
- printl("1. getDesc() - 描述信息:", node.getDesc());
- printl("2. getID() - ID:", node.getID());
- printl("3. getClassName() - 类名:", node.getClassName());
- printl("4. 包名属性: 包名信息通过节点属性获取(非getPackage方法)");
- printl("5. getDepth() - 深度:", node.getDepth());
- printl("6. getIndex() - 索引:", node.getIndex());
- printl("7. getBounds() - 边界:", node.getBounds());
- printl("8. getCenter() - 中心点:", node.getCenter());
- printl("9. getArea() - 面积:", node.getArea());
- printl("10. 百分比边界: 通过节点属性获取(非getBoundsPercent方法)");
- printl("11. 百分比中心: 通过节点属性获取(非getCenterPercent方法)");
- printl("12. 百分比面积: 通过节点属性获取(非getAreaPercent方法)");
-
- printl("");
- printl("=== 节点状态方法 ===");
- printl("1. isClickable() - 可点击:", node.isClickable());
- printl("2. isLongClickable() - 可长按:", node.isLongClickable());
- printl("3. isScrollable() - 可滚动:", node.isScrollable());
- printl("4. isCheckable() - 可勾选:", node.isCheckable());
- printl("5. isChecked() - 已勾选:", node.isChecked());
- printl("6. isEnabled() - 启用状态:", node.isEnabled());
- printl("7. isFocusable() - 可获得焦点:", node.isFocusable());
- printl("8. isFocused() - 已获得焦点:", node.isFocused());
- printl("9. isPassword() - 密码字段:", node.isPassword());
- printl("10. isSelected() - 已选中:", node.isSelected());
- printl("11. isVisibleToUser() - 用户可见:", node.isVisibleToUser());
- printl("12. isEditable() - 可编辑:", node.isEditable());
-
- printl("");
- printl("=== 节点层级方法 ===");
- printl("1. getParent() - 父节点:");
- var parent = node.getParent();
- if (parent != '' && parent != null) {
- printl(" 父节点描述:", parent.getDesc());
- printl(" 父节点类名:", parent.getClassName());
- } else {
- printl(" 无父节点");
- }
-
- printl("2. getChildCount() - 子节点数量:", node.getChildCount());
- printl("3. getChildren() - 获取所有子节点:");
- var children = node.getChildren();
- if (children != '' && children != null && children.count() > 0) {
- printl(" 子节点数量:", children.count());
- printl(" 第一个子节点:", children.getNode(0).getDesc());
- } else {
- printl(" 无子节点");
- }
-
- printl("");
- printl("=== 节点操作方法 ===");
- printl("1. click() - 点击操作演示:");
- printl(" 当前节点:", node.getDesc());
- printl(" 执行 click() 方法");
- // node.click(); // 注释掉实际点击,避免意外操作
-
- printl("2. clickPoint() - 点击坐标:");
- var center = node.getCenter();
- printl(" 中心坐标:", center);
- printl(" 执行 clickPoint() 方法");
- // node.clickPoint(); // 注释掉实际点击
-
- printl("3. longClick() - 长按操作:");
- printl(" 执行 longClick() 方法");
- // node.longClick(); // 注释掉实际操作
-
- printl("4. input() - 输入操作:");
- printl(" 执行 input('test') 方法");
- // node.input('test'); // 注释掉实际输入
- }
- printl("");
- printl("3.2 节点集合操作方法演示...");
- var allElements = auto.nodeSearch(1000);
- if (allElements != '' && allElements.count() > 0) {
- printl("=== 节点集合方法 ===");
- printl("1. count() - 总数量:", allElements.count());
-
- printl("2. getNode(index) - 获取指定索引节点:");
- var firstNode = allElements.getNode(0);
- if (firstNode != '' && firstNode != null) {
- printl(" 第一个节点:", firstNode.getDesc());
- }
-
- printl("3. getNodeList() - 获取节点列表:");
- var nodeList = allElements.getNodeList();
- printl(" 节点列表长度:", nodeList != '' ? nodeList.length : 0);
-
- printl("4. getDescList() - 获取描述列表:");
- var descList = allElements.getDescList();
- printl(" 描述列表长度:", descList != '' ? descList.length : 0);
- if (descList != '' && descList.length > 0) {
- printl(" 前3个描述:", descList[0], descList[1], descList[2]);
- }
-
- printl("");
- printl("=== 节点过滤方法 ===");
-
- // 演示过滤方法
- printl("1. id() - 按ID过滤:");
- var idFiltered = allElements.id("com.estrongs.android.pop:id/rl_content");
- printl(" 过滤结果数量:", idFiltered != '' ? idFiltered.count() : 0);
-
- printl("2. className() - 按类名过滤:");
- var classFiltered = allElements.className("android.widget.TextView");
- printl(" TextView数量:", classFiltered != '' ? classFiltered.count() : 0);
-
- printl("3. text() - 按文本过滤:");
- var textFiltered = allElements.text("文件");
- printl(" 包含'文件'的数量:", textFiltered != '' ? textFiltered.count() : 0);
-
- printl("4. textIncludes() - 按文本包含过滤:");
- var textIncFiltered = allElements.textIncludes("浏览");
- printl(" 包含'浏览'的数量:", textIncFiltered != '' ? textIncFiltered.count() : 0);
-
- printl("5. clickable() - 按可点击状态过滤:");
- var clickableFiltered = allElements.clickable(true);
- printl(" 可点击元素数量:", clickableFiltered != '' ? clickableFiltered.count() : 0);
-
- printl("6. depth() - 按深度过滤:");
- var depthFiltered = allElements.depth(1);
- printl(" 深度为1的元素数量:", depthFiltered != '' ? depthFiltered.count() : 0);
-
- printl("7. bounds() - 按边界过滤:");
- var boundsFiltered = allElements.bounds("[0,0][1080,1920]");
- printl(" 指定边界的元素数量:", boundsFiltered != '' ? boundsFiltered.count() : 0);
-
- printl("8. centerXIn() - 按X坐标范围过滤:");
- var centerXFiltered = allElements.centerXIn(0, 1080);
- printl(" X坐标范围0-1080的元素数量:", centerXFiltered != '' ? centerXFiltered.count() : 0);
-
- printl("9. centerYIn() - 按Y坐标范围过滤:");
- var centerYFiltered = allElements.centerYIn(0, 1920);
- printl(" Y坐标范围0-1920的元素数量:", centerYFiltered != '' ? centerYFiltered.count() : 0);
-
- printl("10. areaIn() - 按面积范围过滤:");
- var areaFiltered = allElements.areaIn(1000, 100000);
- printl(" 面积1000-100000的元素数量:", areaFiltered != '' ? areaFiltered.count() : 0);
-
- printl("11. classIncludes() - 按类名包含过滤:");
- var classIncFiltered = allElements.classIncludes("Layout");
- printl(" 类名包含'Layout'的数量:", classIncFiltered != '' ? classIncFiltered.count() : 0);
- }
- printl("");
- printl("3.3 高级节点操作演示...");
- printl("=== 链式调用演示 ===");
- var chainedResult = auto.nodeSearch(1000)
- .className("android.widget.TextView")
- .clickable(true)
- .depth(2);
- printl("链式调用结果数量:", chainedResult != '' ? chainedResult.count() : 0);
- if (chainedResult != '' && chainedResult.count() > 0) {
- printl("链式调用第一个结果:", chainedResult.getNode(0).getDesc());
- }
- printl("");
- print.log("=== 4. 实用函数 ===");
- printl("4.1 安全点击函数...");
- function safeClickElement(text, timeout) {
- timeout = timeout || 2000;
-
- auto.setDetailedModel();
- var element = auto.nodeSearch(timeout).text(text).clickable(true);
-
- if (element != '' && element.count() > 0) {
- var target = element.getNode(0);
- printl("找到目标元素:", text);
- printl(" 元素ID:", target.getID());
- printl(" 元素类名:", target.getClassName());
-
- // 执行点击
- target.click();
- printl("已点击元素:", text);
- return true;
- } else {
- printl("未找到目标元素:", text);
- return false;
- }
- }
- printl("");
- printl("3.2 页面状态监控...");
- function monitorPageChanges() {
- auto.setDetailedModel();
-
- var initialState = auto.nodeSearch(1000);
- var initialCount = initialState != '' ? initialState.count() : 0;
- printl("初始页面状态 - 元素数量:", initialCount);
-
- // 等待一段时间
- java.lang.Thread.sleep(2000);
-
- var currentState = auto.nodeSearch(1000);
- var currentCount = currentState != '' ? currentState.count() : 0;
- printl("当前页面状态 - 元素数量:", currentCount);
-
- var change = currentCount - initialCount;
- printl("页面变化:", change > 0 ? "增加了" + change + "个元素" : change < 0 ? "减少了" + Math.abs(change) + "个元素" : "无变化");
-
- return change;
- }
- var pageChange = monitorPageChanges();
- printl("");
- print.log("=== Android APP自动化核心API修正版完成 ===");
- printl("💡 基于实际运行环境的API,确保兼容性!");
- print.log("所有修正版API示例已完成!");
复制代码
| |  | |  |
|
|