fix: 任务动作编辑器剪贴板注入改用 ClipInject 通道——u2 set_clipboard 在 Android 10+ 静默失效(粘贴模式必抛 UiAutomationError);提取 core/clipboard_helper 公共模块供工具页与任务执行端共用,粘贴模式 atx-agent pasteClipboard + set_text 兜底
This commit is contained in:
+21
-10
@@ -478,26 +478,37 @@ class GenericStepsWorker(BaseWorker):
|
||||
return found # 命中结果,"测试此步骤"用
|
||||
|
||||
def _exec_clipboard(self, d, params, depth=0):
|
||||
"""剪贴板注入:写入指定内容到剪贴板,可选立即粘贴到当前聚焦的输入框。
|
||||
"""剪贴板注入(ClipInject 通道,Android 10+ 可用),可选立即粘贴。
|
||||
|
||||
批量发链接场景:先聚焦评论区输入框 → 注入+粘贴链接1 → 换链接 → 注入+粘贴链接2……
|
||||
粘贴模式复用 u2 send_keys(内部 setClipboard + pasteClipboard,与"输入文字"同机制)。
|
||||
粘贴模式:ClipInject 写入剪贴板后调 atx-agent pasteClipboard 粘贴到当前
|
||||
焦点输入框;动作失败时兜底 u2 set_text 直接设置聚焦输入框文本(不依赖
|
||||
剪贴板,与"输入文字"兜底同机制)。
|
||||
"""
|
||||
text = str(params.get("text", "") or "")
|
||||
if not text:
|
||||
_log.warning(f"[{self.serial}] clipboard 内容为空,跳过")
|
||||
return False
|
||||
from core.clipboard_helper import inject_clipboard
|
||||
ok, msg = inject_clipboard(self.serial, text, d=d)
|
||||
if not ok:
|
||||
_log.warning(f"[{self.serial}] 剪贴板注入失败: {msg}")
|
||||
return False
|
||||
_log.info(f"[{self.serial}] 剪贴板注入: {text[:60]}({msg})")
|
||||
if not params.get("paste"):
|
||||
return True
|
||||
try:
|
||||
if params.get("paste"):
|
||||
d.send_keys(text) # setClipboard + pasteClipboard
|
||||
_log.info(f"[{self.serial}] 剪贴板注入并粘贴: {text[:60]}")
|
||||
else:
|
||||
d.set_clipboard(text)
|
||||
_log.info(f"[{self.serial}] 剪贴板注入(不粘贴): {text[:60]}")
|
||||
d.jsonrpc.pasteClipboard()
|
||||
_log.info(f"[{self.serial}] 已粘贴: {text[:60]}")
|
||||
return True
|
||||
except Exception as e:
|
||||
_log.warning(f"[{self.serial}] 剪贴板注入异常: {e}")
|
||||
return False
|
||||
try:
|
||||
d(focused=True).set_text(text)
|
||||
_log.info(f"[{self.serial}] 粘贴兜底 set_text: {text[:60]}")
|
||||
return True
|
||||
except Exception as e2:
|
||||
_log.warning(f"[{self.serial}] 粘贴失败: {e} / {e2}")
|
||||
return True # 剪贴板已写入,粘贴失败不致命
|
||||
|
||||
def _exec_wait(self, d, params, depth=0):
|
||||
min_s = float(params.get("min", 1.0))
|
||||
|
||||
Reference in New Issue
Block a user