我的目标是确定元素是否在页面上并对该元素执行操作(如果存在)。
在这段代码中,我只展示了尝试对元素执行操作的第二部分。
我的代码是:
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)。
答案 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脚本,可以通过选中“系统偏好设置”的“辅助功能”面板中的“启用辅助设备访问”复选框来启用(如图所示)。
您可以使用
点击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