input.js 1.1 KB

123456789101112131415161718192021222324
  1. /**
  2. * adb method: input — 输入文本(支持 clear 清空)
  3. */
  4. async function run(action, ctx) {
  5. const { device, folderPath, variableContext, api, extractVarName, resolveValue } = ctx
  6. const inVars = action.inVars || []
  7. let inputValue = inVars.length > 0 ? variableContext[extractVarName(inVars[0])] : null
  8. if (!inputValue && action.value) inputValue = resolveValue(action.value, variableContext)
  9. if (!inputValue) return { success: false, error: 'input 操作缺少输入内容' }
  10. if (action.clear) {
  11. for (let i = 0; i < 200; i++) {
  12. const clearResult = await api.sendKeyEvent(device, '67')
  13. if (!clearResult.success) break
  14. await new Promise((r) => setTimeout(r, 10))
  15. }
  16. await new Promise((r) => setTimeout(r, 200))
  17. }
  18. if (!api?.sendText) return { success: false, error: '输入 API 不可用' }
  19. const textResult = await api.sendText(device, String(inputValue))
  20. if (!textResult.success) return { success: false, error: `输入失败: ${textResult.error != null ? textResult.error : 'unknown'}` }
  21. return { success: true }
  22. }
  23. module.exports = { run }