使用JavaScript document.getElementById方法的结果“缺少值”

时间:2018-06-25 14:23:13

标签: javascript applescript

我正在尝试自动进行搜索,并重点关注计算机在搜索栏中键入搜索内容的部分。我认为我所有的语法都是正确的,但是当我运行代码时,什么也没有发生,并且在applescript结果日志中,它显示“缺少值”。

这是我的代码:

to inputByID(theId, theValue) --defines the function--
    tell application "Google Chrome"
        open location "https://www.google.com "
        execute javascript " document.getElementById(' " & theId & " ').value = ' " & theValue
    end tell
end inputByID

inputByID("lst-ib", "hi ")

我的语法错误还是我遗漏了一些东西?任何帮助表示赞赏。.

2 个答案:

答案 0 :(得分:0)

" document.getElementById('" & theId & "').value = '" & theValue & "'"

可能您必须删除theId之前和之后的空格

以使其变为('myId')而不是(' myId ')

,并在末尾添加引号。

答案 1 :(得分:0)

这在macOS High Sierra中对我有效:

to inputByID(theId, theValue)
    tell application "Google Chrome"
        open location "https://www.google.com"
        repeat until (loading of active tab of front window is false)
            delay 0.1
        end repeat
        tell active tab of front window
            execute javascript "document.getElementById('" & theId & "').value = '" & theValue & "';"
        end tell
    end tell
end inputByID

inputByID("lst-ib", "Hello World!")

除了您的 code execute javascript ...行格式不正确的事实之外,您可以将自己的行与我的行进行比较以了解差异,您也没有告诉Google Chrome {{{ 1}}行 code 。因此,例如:execute javascript ...

另外,在使用tell active tab of front window 命令之后,您还必须等待 code的open location ...行的 target 存在,因此在execute javascript ... 命令之后和{{1}前使用 code repeat until (loading of active tab of front window is false)行} code 行。