修改导航到页面流程

This commit is contained in:
manchuwork
2025-10-31 23:51:20 +08:00
parent 88a289328b
commit 5158cfb83d

View File

@@ -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()
}
}