5

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

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

我的代码是:

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)。

4

3 回答 3

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
于 2013-09-26T03:18:08.407 回答
0

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

do JavaScript "window.onload=function(){document.getElementById(\"gn-store\").click()}" 
于 2013-09-26T02:29:09.950 回答
0

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

您可以通过使用在 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
于 2013-09-26T05:12:56.633 回答