代码之家  ›  专栏  ›  技术社区  ›  Kevin

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

  •  2
  • Kevin  · 技术社区  · 8 年前

    我这里有一个脚本,它在一个无焦点的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 
    

    奇怪的是,有时工作,有时不工作,我不能增加太多的延迟

    -- 也许,我可以添加一些类似的内容

    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 回复  |  直到 8 年前
        1
  •  1
  •   oa-    8 年前

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

    将此代码放入脚本中:

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

    快乐的脚本!