修改导航到页面流程
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user