1

我正在使用 applescript 来自动化一些浏览器活动。我将它与语音识别相关联,这样我就可以制作一些自定义语音命令。

一个这样的命令是“我想回家”,当听到它时,会在我的浏览器上调出相关的巴士时刻表。鉴于公共交通系统使用 PHP 和 GET,URL 会变得很长。因此,keystroke myURLapplescript 中的 执行需要一段时间(大约 1-2 秒)。虽然我可以忍受失去 1-2 秒,但我真的不想这样做。

考虑到这一点,是否可以更快地发送这些击键?我相信我在某处读到 usingkey code比 using 更快keystroke,但对于我的一生,我无法弄清楚我在哪里读到的。

编辑:我选择的浏览器是谷歌浏览器,我找不到 URL 挂钩。这就是为什么我不得不求助于使用击键。因此,我更喜欢使用 Chrome 而不是 Safari 的答案

4

3 回答 3

2

解决此问题的另一种方法是将文本放入剪贴板,然后粘贴。您可以先保存剪贴板内容,然后再将其放回原处,这样您就不会丢失已经存在的内容。当您想要输入大量文本时,此方法适用于其他情况,而不仅仅是像其他答案那样用于浏览器 URL。

    set clipboard_contents to (the clipboard)
    set the clipboard to "Some long string that would take a while with the keystroke method"
    tell application "System Events" to keystroke "v" using command down
    delay 0.2 -- needed because otherwise the next command can run before the paste occurs
    set the clipboard to clipboard_contents
于 2017-07-24T00:54:55.097 回答
1

我很确定您可以编写浏览器脚本以直接打开 URL,而不是键入击键(AppleScript 中的伪造输入事件应该被视为最后的手段)。

您可以通过open location标准添加来做到这一点:

open location "http://google.com"
于 2013-03-05T15:25:54.923 回答
0

打开位置在标准添加中定义,不应包含在告诉语句中。

open location "http://google.com"

如果要针对特定​​浏览器,可以使用:

tell application "Safari"
    if not (exists document 1) then reopen
    set URL of document 1 to "http://google.com"
end tell

以 Chrome 为目标:

tell application "Google Chrome"
    if not (exists window 1) then reopen
    set URL of active tab of window 1 to "https://www.google.com/"
end tell
于 2013-03-05T15:41:00.653 回答