【问题标题】:Expected end of line error on applescript trying to fill a webform尝试填写网络表单的 AppleScript 出现预期的行尾错误
【发布时间】:2017-11-01 23:39:28
【问题描述】:

我正在尝试编写一个可以运行的 Apple 脚本,以填写我每天都要填写的一些网络表单(JIRA 票证表单)。

我创建了这个 JS 脚本,当我在 Chrome 的控制台上运行它时它可以工作:

document.getElementById('summary').value="Inserted text"

所以现在我创建了我的applescript,以便能够在外部执行它,但我总是得到“语法错误。预期行尾等,但发现未知令牌。”

这是代码:

tell application "Google Chrome"

execute javascript document.getElementById('summary').value="Inserted text" in document 1   

end tell

我知道 tell application 有效,但我不明白如何解决语法错误并使 applescript 工作

【问题讨论】:

    标签: javascript google-chrome applescript jira


    【解决方案1】:

    in document 1 语法适用于 Safari。

    使用谷歌浏览器,您应该与目标windowactive tab 交谈,例如:

    tell application "Google Chrome"
        tell active tab of window 1
            execute javascript "document.getElementById('summary').value = 'Inserted text';"
        end tell
    end tell
    

    或者用它的name替换窗口号

    【讨论】:

    • 虽然您的代码版本在大多数情况下都能正常运行,但有时窗口 1 不是活动窗口……活动窗口实际上是目标。我详细解释了一个场景,您的版本会因为向错误的窗口发送 JavaScript 命令而引发错误
    • @wch1zpink,首先,我的回答指出in document 1 语法适用于 Safari,这是 OP 中的代码失败的主要原因。其次,我说“使用 Google Chrome,您应该与目标窗口的活动选项卡对话,例如:”,请注意引用行末尾的 e.g.:!这是示例代码,不一定是用户使用它的绝对方式,以及为什么我还声明“或将 窗口编号 替换为其 name。用户有责任制定 code 来满足他们的需要,不一定要逐字逐句地用一个例子来说明它是如何工作的!
    • 我的 cmets 和回复只是因为我不相信您的评论“这只是我已经说过的同一件事的两种不同说法!”是真实的。我对 OP 问题的解决方案是一个完全有效的替代方案。但是,您的代码之外的声明......“或者用它的名称替换窗口编号。”将解决与我的解决方案相同的问题。
    【解决方案2】:

    这适用于我使用最新版本的 Sierra

    tell application "Google Chrome"
        execute front window's active tab javascript "document.getElementById('summary').value = 'Inserted text';"
    end tell
    

    OR - 仅压缩为一行代码

    tell application "Google Chrome" to execute front window's active tab javascript "document.getElementById('summary').value = 'Inserted text';"
    

    我选择这段代码的原因是因为下面这个例子..

    在 Google Chrome 中,我从一个窗口开始,然后是一个带有 4 个选项卡的窗口。下一个, 将这些选项卡拆分为 4 个单独的窗口。在此之后,我选择了右下角的窗口,使其成为“活动窗口”。认为右下角的窗口,处于活动状态,现在将是“窗口 1”……我错了(根据以下脚本的结果)

    如果我在“窗口 1”中运行脚本,它将在浏览器的左上角窗口中运行,当我只有一个窗口和一个选项卡时,它是窗口 1。它保留了它的初始值。问题是这不是我想在其上运行脚本的窗口

    所以显然窗口 1 不一定是前窗口

    【讨论】:

    • 这只是我已经说过的两种不同的说法!
    • @user3439894 我不得不恭敬地不同意.. 您的代码版本针对窗口 1,它可能是也可能不是前活动窗口。我的版本以前面的活动窗口为目标,无论它是否是窗口 1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2011-08-24
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多