AppleScript Safari:页面完全加载后单击按钮

时间:2016-11-08 16:52:34

标签: safari click applescript getelementsbyname

我这里有这个脚本,它在一个未聚焦的safari选项卡上加载一个配置文件,并将我想要的文本保存在一个变量中

tell application "Safari" to set the URL of tab 2 of window 1 to "https://URLproduct/" & serialNumber & "/definition"
    delay 2.5

然而,有些数据仅在点击按钮后才可用(这是一个弹出式按钮,带有按钮,这使得另一个文本无法访问,直到您按下“确定”,此按钮也不是永远在这里)

按钮HTML是:

<button class="btn btn-primary" autofocus="" ng-click="ok()" tabindex="0">OK</button>

我按下这个脚本:

do JavaScript "document.getElementsByClassName('btn btn-primary')[1].click();" in tab 2 of window 1 

很奇怪有时候某个时候没有工作,我不能添加太多延迟

我可以添加一个等待此按钮的脚本('btn btn-primary')可用(完全加载)然后再次尝试使用我的第一个脚本获取文本吗?

- 也许我可以添加像

这样的东西
tell application "Safari"


    tell document 1
        repeat until ("btn btn-primary" is in its source)
            delay 0.5
        end repeat
    end tell
end tell

然后点击脚本?

1 个答案:

答案 0 :(得分:1)

是的,您可以在页面加载后开始执行脚本。这样可以确保按钮是可点击的(如果它出现的话)。

将此代码放入您的脚本中:

    tell application "Safari"
        repeat until (do JavaScript "document.readyState" in document 1) is "complete"
        end repeat
    end tell

快乐的脚本!