修改人员数量

This commit is contained in:
manchuwork
2025-11-01 01:09:03 +08:00
parent 5158cfb83d
commit 16b5efb3c6
3 changed files with 50 additions and 28 deletions

View File

@@ -5,16 +5,25 @@ class FieldName {
val defaultValue: String val defaultValue: String
val type: FieldType val type: FieldType
constructor(fieldName: String, hintText: String, defaultValue: String, type: FieldType = FieldType.TEXT){ val fieldFindBy: FieldFindBy
constructor(fieldName: String, hintText: String, defaultValue: String, type: FieldType = FieldType.TEXT, fieldFindBy: FieldFindBy = FieldFindBy.HINT){
this.fieldName = fieldName this.fieldName = fieldName
this.hintText = hintText this.hintText = hintText
this.defaultValue = defaultValue this.defaultValue = defaultValue
this.type = type this.type = type
this.fieldFindBy = fieldFindBy
} }
val fieldName: String val fieldName: String
val hintText: String val hintText: String
} }
enum class FieldFindBy {
TEXT,
HINT,
CONTENT_DESCRIPTION
}
enum class FieldType { enum class FieldType {
TEXT, TEXT,
SELECT, SELECT,

View File

@@ -11,7 +11,7 @@ import com.loveerror.bested.tool.RootNodeCallback
class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) { class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
fun getRootInActiveWindow(): AccessibilityNodeInfo? { fun getRootInActiveWindow(): AccessibilityNodeInfo {
return rootNodeCallback.getRootNodeReceived() return rootNodeCallback.getRootNodeReceived()
} }
@@ -24,7 +24,7 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
fields.add(FieldName("法人代表", "请输入法人姓名", "", FieldType.TEXT)) fields.add(FieldName("法人代表", "请输入法人姓名", "", FieldType.TEXT))
fields.add(FieldName("证件地址", "请输入证件地址", "", FieldType.TEXT)) fields.add(FieldName("证件地址", "请输入证件地址", "", FieldType.TEXT))
fields.add(FieldName("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT)) fields.add(FieldName("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT))
fields.add(FieldName("员工数", "请输入人数", "1", FieldType.TEXT)) fields.add(FieldName("员工数", "请输入人数", "1", FieldType.TEXT, fieldFindBy= FieldFindBy.TEXT))
// select // select
fields.add(FieldName("集团状态", "", "潜在集团", FieldType.SELECT)) fields.add(FieldName("集团状态", "", "潜在集团", FieldType.SELECT))
@@ -54,9 +54,17 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
convertedMap[mappedKey] = value convertedMap[mappedKey] = value
} }
convertedMap["证件名称"]= convertedMap["集团名称"].toString() convertedMap["证件名称"]= convertedMap["集团名称"].toString()
// 参保人数值如果为 eg: 8人 ->8 // 参保人数值如果为 eg: 8人 ->8
if (convertedMap["员工数"]?.contains("") == true) { if (convertedMap["员工数"]?.contains("") == true) {
convertedMap["员工数"] = convertedMap["员工数"]?.replace("", "").toString() // 处理 "2人 (2024年报)" 格式,提取数字部分
val regex = Regex("(\\d+)人")
val matchResult = regex.find(convertedMap["员工数"].toString())
if (matchResult != null) {
convertedMap["员工数"] = matchResult.groupValues[1]
} else {
convertedMap["员工数"] = convertedMap["员工数"]?.replace("", "").toString()
}
} }
return convertedMap return convertedMap
} }
@@ -147,10 +155,16 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
field.hintText, fieldMap[field.fieldName] ?: field.defaultValue field.hintText, fieldMap[field.fieldName] ?: field.defaultValue
) )
} else { } else {
AccessibilityTool.fillEditTextByHintText( if (field.fieldFindBy == FieldFindBy.TEXT) {
root, fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName, AccessibilityTool.fillEditTextByText(root, fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName,
field.hintText field.hintText)
) }else{
AccessibilityTool.fillEditTextByHintText(
root, fieldMap[field.fieldName] ?: field.defaultValue, field.fieldName,
field.hintText
)
}
} }
} }
@@ -185,11 +199,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数") AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数")
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数") // fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
// clickToOpenBottomSheetAddress( clickToOpenBottomSheetAddress(
// root, root,
// "请点击此处打点", "请点击此处打点",
// "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座" "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
// ) )
// 示例:点击"集团状态"触发底部选择,选择"在网集团" // 示例:点击"集团状态"触发底部选择,选择"在网集团"
// fillCompanyNameField(root, groupName) // fillCompanyNameField(root, groupName)
@@ -219,7 +233,7 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
return return
} }
Thread.sleep(3000) Thread.sleep(8000)
// 地图选址 按钮 // 地图选址 按钮
val mapSearchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "地图选址") val mapSearchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "地图选址")
if (mapSearchButton != null) { if (mapSearchButton != null) {
@@ -229,14 +243,14 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
println("未找到地图选址按钮") println("未找到地图选址按钮")
return return
} }
Thread.sleep(3000) Thread.sleep(5000)
var clickFirst = findTargetElement(getRootInActiveWindow()) var clickFirst = findTargetElement(getRootInActiveWindow())
if (clickFirst == null) { if (clickFirst == null) {
println("clickFirst is null") println("clickFirst is null")
return return
} }
AccessibilityTool.performClick(clickFirst) AccessibilityTool.performClick(clickFirst)
Thread.sleep(3000) Thread.sleep(5000)
var searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索") var searchButton = NodeToolText.findNodeByText(getRootInActiveWindow(), "搜索")
if (searchButton == null) { if (searchButton == null) {

View File

@@ -13,6 +13,11 @@ class AccessibilityTool {
fillEditText(editTextNode,value,fieldName) fillEditText(editTextNode,value,fieldName)
} }
fun fillEditTextByText(root: AccessibilityNodeInfo, value: String, fieldName : String, hintText: String) {
val editTextNode = NodeToolText.findNodeByText(root, hintText)
fillEditText(editTextNode,value,fieldName)
}
fun fillEditText(editText: AccessibilityNodeInfo?, value: String, fieldName : String) { fun fillEditText(editText: AccessibilityNodeInfo?, value: String, fieldName : String) {
if (editText == null) { if (editText == null) {
return return
@@ -84,7 +89,7 @@ class AccessibilityTool {
println("已选择第一个搜索结果") println("已选择第一个搜索结果")
// 点击确认按钮 // 点击确认按钮
Thread.sleep(500) Thread.sleep(3000)
val confirmButton = NodeToolText.findNodeByText(root, "确认") val confirmButton = NodeToolText.findNodeByText(root, "确认")
?: NodeToolText.findNodeByText(root, "确定") ?: NodeToolText.findNodeByText(root, "确定")
if (confirmButton?.isClickable == true) { if (confirmButton?.isClickable == true) {
@@ -113,7 +118,7 @@ class AccessibilityTool {
clickToOpenBottomSheet(rootNodeCallback.getRootNodeReceived(), fieldName) clickToOpenBottomSheet(rootNodeCallback.getRootNodeReceived(), fieldName)
// 2. 等待对话框完全显示 // 2. 等待对话框完全显示
Thread.sleep(1000) Thread.sleep(5000)
NodeToolTime.selectDateWithRetry(rootNodeCallback, year, month, day) NodeToolTime.selectDateWithRetry(rootNodeCallback, year, month, day)
} }
@@ -136,22 +141,18 @@ class AccessibilityTool {
} }
fun performBottomSheetSelection(rootNodeCallback: RootNodeCallback, triggerText: String, optionText: String) { fun performBottomSheetSelection(rootNodeCallback: RootNodeCallback, triggerText: String, optionText: String) {
val root = rootNodeCallback.getRootNodeReceived()
if(root == null){
return
}
// 1. 点击触发元素打开底部对话框 // 1. 点击触发元素打开底部对话框
clickToOpenBottomSheet(root, triggerText) clickToOpenBottomSheet(rootNodeCallback.getRootNodeReceived(), triggerText)
// 2. 等待对话框完全显示 // 2. 等待对话框完全显示
Thread.sleep(1000) Thread.sleep(4000)
// 3. 选择目标选项 // 3. 选择目标选项
selectOptionFromBottomSheet(rootNodeCallback,optionText) selectOptionFromBottomSheet(rootNodeCallback,optionText)
// 4. 明确点击确认按钮 dubbo check // 4. 明确点击确认按钮 dubbo check
clickConfirmButton(rootNodeCallback) clickConfirmButton(rootNodeCallback)
Thread.sleep(500) // 等待确认操作完成 Thread.sleep(1500) // 等待确认操作完成
} }
// 点击可点击的触发元素来显示底部选择对话框 // 点击可点击的触发元素来显示底部选择对话框
@@ -182,9 +183,6 @@ class AccessibilityTool {
fun selectOptionFromBottomSheet(rootNodeCallback: RootNodeCallback,optionText: String, confirm: Boolean = true) { fun selectOptionFromBottomSheet(rootNodeCallback: RootNodeCallback,optionText: String, confirm: Boolean = true) {
// 获取更新后的根节点 // 获取更新后的根节点
val newRoot = rootNodeCallback.getRootNodeReceived() val newRoot = rootNodeCallback.getRootNodeReceived()
if (newRoot == null) {
return
}
// 查找并点击选项 // 查找并点击选项
val optionNode = NodeToolText.findNodeByText(newRoot, optionText) val optionNode = NodeToolText.findNodeByText(newRoot, optionText)
@@ -204,6 +202,7 @@ class AccessibilityTool {
} else { } else {
println("未找到底部选项: $optionText") println("未找到底部选项: $optionText")
} }
} }