From 5158cfb83d61df48788af9ac2eddaefddff55ede Mon Sep 17 00:00:00 2001 From: manchuwork Date: Fri, 31 Oct 2025 23:51:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=88=AA=E5=88=B0?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bested/handler/ZJMCCMCRMStateMachine.kt | 85 ++++++++++++++----- 1 file changed, 66 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRMStateMachine.kt b/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRMStateMachine.kt index d160b11..cca9f48 100644 --- a/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRMStateMachine.kt +++ b/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRMStateMachine.kt @@ -3,7 +3,9 @@ package com.loveerror.bested.handler import android.content.Intent import android.view.accessibility.AccessibilityNodeInfo import com.loveerror.bested.tool.AccessibilityTool +import com.loveerror.bested.tool.NodeToolText import com.loveerror.bested.tool.RootNodeCallback +import com.loveerror.bested.tool.WebViewTool class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) { private var currentState: ZJMCCMCRMState = ZJMCCMCRMState.UNKNOWN @@ -74,7 +76,7 @@ class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) { // 获取下一个应该转换到的状态 val nextState = getNextStateForTarget() - println("下一步将转换到: $nextState") + println("当前状态:$currentState 下一步将转换到: $nextState") // 验证 nextState 是否符合预期 if (nextState == ZJMCCMCRMState.UNKNOWN) { @@ -85,8 +87,10 @@ class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) { // 使用状态映射执行相应动作 val transitionHandler = stateTransitionMap[Pair(currentState, nextState)] if (transitionHandler != null) { - transitionHandler.invoke(root,intent) - currentState = nextState + transitionHandler.invoke(intent) +// currentState = nextState + updateState(root) + println("当前状态: $currentState after transitionHandler.invoke") }else{ println("无法从当前状态导航到目标状态") break @@ -141,7 +145,12 @@ class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) { } - private fun updateState(root: AccessibilityNodeInfo) { + private fun updateState(rootArgs: AccessibilityNodeInfo) { + val root = getRootInActiveWindow() ?: return + +// // 窗口变化时检查 +// WebViewTool.enhanceWebViewAccessibility(root) +// WebViewTool.traverseAndEnhanceNodes(root) currentState = when { zjMccmCrm.isHomePage(root) -> ZJMCCMCRMState.HOME_PAGE zjMccmCrm.isGroupAllAppsList(root) -> ZJMCCMCRMState.GROUP_ALL_APPS_LIST @@ -150,44 +159,82 @@ class ZJMCCMCRMStateMachine(private val rootNodeCallback: RootNodeCallback) { zjMccmCrm.isCompanySearchPage(root) -> ZJMCCMCRMState.SEARCH_COMPANY_PAGE else -> ZJMCCMCRMState.UNKNOWN } + println("updateState 当前状态: $currentState") } - private fun handleHomePageToGroupAllAppsList(root: AccessibilityNodeInfo,intent: Intent?) { - AccessibilityTool.printViewTree(root) + private fun handleHomePageToGroupAllAppsList(intent: Intent?) { + + val root = rootNodeCallback.getRootNodeReceived() + +// AccessibilityTool.printViewTree(root) AccessibilityTool.clickButtonByText(root, "常用功能", "全部") println("常用功能 全部 clicked") - Thread.sleep(1000) + + waitForLoading() } - private fun handleAllAppsListToGroupCreateSelectPage(root: AccessibilityNodeInfo,intent: Intent?) { - AccessibilityTool.printViewTree(root) + private fun handleAllAppsListToGroupCreateSelectPage(intent: Intent?) { + waitForLoading() val updatedRoot = rootNodeCallback.getRootNodeReceived() - if(updatedRoot== null){ - return - } +// AccessibilityTool.printViewTree(updatedRoot) + AccessibilityTool.clickButtonByText(updatedRoot, "集团新建") + println("集团新建 clicked") - Thread.sleep(10 * 1000) + Thread.sleep(10000) + waitForLoading() } - private fun handleGroupCreateSelectPageToNormalGroupCreatePage(root: AccessibilityNodeInfo,intent: Intent?) { - AccessibilityTool.printViewTree(root, "before普通建档") + + private fun waitForLoading() { + Thread.sleep(1000) + for (i in 1..15) { + val loading = NodeToolText.findNodeByText(rootNodeCallback.getRootNodeReceived(), "加载中") + if(loading == null){ + break + } + Thread.sleep(2000) + } + } + private fun handleGroupCreateSelectPageToNormalGroupCreatePage(intent: Intent?) { + waitForLoading() + for (i in 1..15) { + val normalGroupCreatePage = NodeToolText.findNodeByText(rootNodeCallback.getRootNodeReceived(), "普通建档") + if(normalGroupCreatePage != null){ + break + } + Thread.sleep(2000) + } + val root = rootNodeCallback.getRootNodeReceived() +// AccessibilityTool.printViewTree(root, "before普通建档") AccessibilityTool.clickButtonByText(root, "普通建档") - Thread.sleep(15 * 1000) + println("普通建档 clicked") - AccessibilityTool.printViewTree(root, "after普通建档") + waitForLoading() + // 窗口变化时检查 + WebViewTool.enhanceWebViewAccessibility(rootNodeCallback.getRootNodeReceived()) +// WebViewTool.traverseAndEnhanceNodes(rootNodeCallback.getRootNodeReceived()) + + Thread.sleep(5 * 1000) + + // 窗口变化时检查 + WebViewTool.enhanceWebViewAccessibility(rootNodeCallback.getRootNodeReceived()) +// WebViewTool.traverseAndEnhanceNodes(rootNodeCallback.getRootNodeReceived()) +// AccessibilityTool.printViewTree(root, "after普通建档") } - private fun handleAllAppsListToSearchCompanyPage(root: AccessibilityNodeInfo,intent: Intent?) { + private fun handleAllAppsListToSearchCompanyPage(intent: Intent?) { // val companyName = intent?.getStringExtra("textInput") // if (companyName == null) { // println("companyName is null") // return // } + val root = rootNodeCallback.getRootNodeReceived() AccessibilityTool.printViewTree(root) AccessibilityTool.clickButtonByText(root, "全网查询") println("全网查询 clicked") - Thread.sleep(1000) +// Thread.sleep(1000) + waitForLoading() } }