Tasker 和 AutoInput 无法按 ID 字段点击 HTML 按钮

问题描述

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 应用程序操作的键盘快捷键,然后使用输入 > 键盘任务程序操作来触发键盘快捷键。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...