问题描述
TL;DR
AutoInput 不会点击带有 ID 的 HTML 按钮,即使 EasySetup 看到 ID 并建议它。
背景
我正在制作一个基于 HTML 的棋盘游戏计时器,我想连接一个便宜的蓝牙遥控器以允许结束当前回合、通过一轮等。遥控器发送 VolumeUp,我希望使用 Tasker 和 AutoInput 捕获并重定向到我的计时器按钮上的 Click 操作。
问题
自动输入点击操作超时。如果我更改它以使用按钮的文本而不是 ID 查找按钮,则它可以工作。不幸的是,“动作-播放-暂停”按钮会根据按钮是“继续游戏”按钮还是“暂停游戏”按钮来更改文本。 (id保持不变)
到目前为止我尝试过的
SGT PlayPause (this does not work)
A1: AutoInput Action [
Configuration:Type: Id
Value: action-play-pause
Action : Click Timeout (Seconds):1 Structure Output (JSON,etc):On Continue Task After Error:On
]
A2: Flash [ Text:%errmsg Long:Off ] If [ %errmsg Set ]
SGT Primary (this works)
A1: AutoInput Action [
Configuration:Type: Text
Value: End Turn
Action : Click Timeout (Seconds):1 Structure Output (JSON,etc):On Continue Task After Error:On
]
A2: Flash [ Text:%errmsg Long:Off ] If [ %errmsg Set ]
如果您想自己尝试一下,我在此处设置了一个非常简单的 HTML 页面,其中包含以下按钮:https://parakoos.github.io/
就是这样的按钮:
<button id="action-primary" type="button" onclick="alert('Turn Ended')">End Turn</button>
<button id="action-secondary" type="button" onclick="alert('Round Passed')">Pass</button>
<button id="action-play-pause" type="button" onclick="alert('Play Pause')">Play Pause</button>
真正奇怪的是,动作配置是使用 EasySetup 模式设置的,点击按钮正确识别 ID 字段并建议我使用它。只是,当我实际触发操作时,它永远不会真正找到它。
考虑的替代方案
如果我无法让 Tasker 根据 ID 单击按钮,有没有办法获取按钮的当前文本(基于 ID),然后在单击操作的变量中使用它?
>或者,如果我可以将 VolumeUp 命令转换为“Enter”按键,那么我可以在我的应用程序中收听这些命令并对它们做出反应。 (实际上我已经有了它。)但我不知道如何使用 Tasker 模拟 Enter 按键。
谁能解释一下这种情况?我将不胜感激。
解决方法
我从其他论坛收到以下内容:
如果页面正在浏览器中显示,这就是原因。自动输入 无法与 Web 浏览器中的元素互动 AutoInput 只会 查看浏览器本身的事件和活动,而不是什么 呈现在其中。
我以不同的方式解决了这个问题。我制作了触发我想要的 Web 应用程序操作的键盘快捷键,然后使用输入 > 键盘任务程序操作来触发键盘快捷键。