【问题标题】:AutoHotKey, set focus on a button webpage and send clickAutoHotKey,在按钮网页上设置焦点并发送点击
【发布时间】:2016-07-28 11:25:54
【问题描述】:

我的 html 页面上有一个按钮,窗口标题为“Page”:

<button onclick="alert('This button has been clicked')">Submit</button>

并使用 AutoHotKey,我试图将焦点设置在他身上,然后发送鼠标点击。

这是我写的 AHK 代码:

^p::
ControlFocus, Submit, Page
MouseClick left
return

按 Ctrl+P 键时,它应该完成他的工作。不幸的是,它不起作用。我已经阅读了包含一些示例的文档,但我无法让它工作......

【问题讨论】:

  • 呈现页面中的 HTML 元素远没有在现代浏览器中被表示为自己的窗口控件。也就是说,您的浏览器不会为每个元素都公开一个控件;实际上,它只会为整个渲染页面公开一个控件,甚至只为整个浏览器窗口公开一个控件。如果您使用的是 IE,请尝试COM object automation。在 Chrome 或 Firefox 中,我建议写一个userscript
  • 除了使用点击坐标或者Tab键,有没有其他方法可以让按钮获得焦点?
  • @EddNewGate 是的,只要您使用 IE 并按照@MCL 所说的有关 COM 对象自动化的方法进行操作,这很容易。它最终会变成wb.Document.getElementByID("ElementName").click()(如果您知道元素名称)或wb.document.getElementsByTagName("button")[1].click()(如果它只能通过其标记类型和索引访问)。另见autohotkey.com/board/topic/…
  • 抱歉,您确实想点击,对吧?如果您只想专注于某个控件,请将.click() 更改为.focus()。或者,如果您需要检查控件的文本(例如当按钮随机放置在左侧或右侧时),您可以查看 .innerText.innerHTML 但这在两个教程 @MCL 和我指示你去。
  • @PGilm 我不想求助于 IE。这些天正在搜索是否可以使其工作,就像它在其他浏览器上的 IE 中如何工作一样,但后来我发现不可能或不太容易......我知道还有其他方法可以聚焦按钮然后发送一个点击,它适用于所有浏览器,但不是那么出色(比如将鼠标光标设置到屏幕上与按钮位置匹配的特定坐标)。我想我会遵循提供的 MCL 解决方案。我相信如果我可以编写一个脚本来为网页上的按钮分配热键,我就可以在 AHK 中调用它。我会看到:)

标签: autohotkey


【解决方案1】:

您可以在此处了解有关将 AHK 与 HTML DOM 集成的更多信息:
https://autohotkey.com/boards/viewtopic.php?f=7&t=4588
请参阅以下示例,了解如何实现此类目标。

示例

#SingleInstance, off
OnExit,OnExit

Gui Add, ActiveX, x0 y0 w640 h480 vWB, Shell.Explorer  ; The final parameter is the name of the ActiveX component.
WB.silent := true ;Surpress JS Error boxes
WB.navigate("http://example.com/") ;put your web address here...
ComObjConnect(WB, WB_events)  ; Connect WB's events to the WB_events class object.
Gui Show, w640 h480

return

GuiClose:
OnExit:
ExitApp

class WB_events
{
    ;NavigateComplete2(wb, NewURL)
    ;DownloadComplete(wb, NewURL)
    DocumentComplete(wb, NewURL)
    {
        if (WB.ReadyState == 4) { ; see http://stackoverflow.com/a/9835755/883015
            Sleep, 300 ;wait 300 ms
            
            ;Do what you here...
            ;for example, click the first link on the page, you can change this for a button.
            wb.document.getElementsByTagName("a")[0].click()
            MsgBox Item was clicked.
        }
        return
    }
}

【讨论】:

  • @ThierryDalon 是的,对于 chrome,您将不得不做其他事情。您可以使用Chrome.ahk 来简化事情。
猜你喜欢
  • 2021-07-25
  • 2018-09-22
  • 1970-01-01
  • 2011-09-09
  • 2015-03-08
  • 1970-01-01
  • 2016-02-03
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多