2

ここにこのスクリプトがあり、フォーカスされていないサファリタブにプロファイルをロードし、必要なテキストを変数に保存しています

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

ただし、一部のデータは、ボタンをクリックした後にのみ使用できます (これはボタン付きのオーバーレイのようなポップアップであり、「OK」を押すまで別のテキストにアクセスできません。また、このボタンは常にここにあるとは限りません)

ボタンの 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

次にクリックスクリプト?

4

1 に答える 1