为什么我的getElementById()结果为"缺少值"在Applescript?

时间:2013-09-26 02:13:12

标签: javascript applescript getelementbyid

我的目标是确定元素是否在页面上并对该元素执行操作(如果存在)。

在这段代码中,我只展示了尝试对元素执行操作的第二部分。

我的代码是:

tell application "Safari" 
    open location "http://www.apple.com" 
    tell front document 
        do JavaScript "document.getElementById(\"gn-store\").click()" 
    end tell 
end tell 

但是,我总是得到“缺失值”的结果,从这段代码和我尝试的类似事情(包括在Js中调用一个函数,从getElementById()返回一个值。

我不明白我做错了什么。我已经好几个小时了。 (并且为了记录,我是一个AppleScript noob)。

3 个答案:

答案 0 :(得分:3)

我发现Chrome通过AppleScript对Javascript的反应更好......

tell application "Google Chrome"
    if not (exists window 1) then reopen
    activate
    tell window 1 to tell active tab
        set its URL to "http://www.apple.com/"
        delay 3
        execute javascript "document.getElementById('gn-store').childNodes[0].click()"
    end tell
end tell

答案 1 :(得分:0)

您可能尝试在元素存在之前获取该元素(该页面刚刚开始加载)。试试这个:

do JavaScript "window.onload=function(){document.getElementById(\"gn-store\").click()}" 

答案 2 :(得分:0)

Applescript中有一种方法可以点击此按钮。它涉及GUI脚本,可以通过选中“系统偏好设置”的“辅助功能”面板中的“启用辅助设备访问”复选框来启用(如图所示)。 How to enable GUI Scripting

您可以使用

点击Apple网站上的“商店”
tell application "Safari"
    open
    activate
    set frontmost to true
    open location "http://www.apple.com"
end tell
tell application "System Events" to tell process "Safari"
    delay 3
    tell UI element 2 of group 1 of UI element 1 of scroll area of group 1 of group 1 of group 2 of window "Apple" to perform action "AXPress"
end tell