エラー「変数varが定義されていません。」メソッド内の「var」からの数値-2753


0

続行する前にWebページ上の要素が表示されるのを待つメソッドを作成しようとしています。このコードは、メソッドに配置されていない場合でも機能します

on waitForId(idText)
set var to false
set idText to "\"" & idText & "\""
repeat until var is true
    tell application "Safari"
        set var to (do JavaScript "document.contains(document.getElementById(idText));") in current tab of first window
    end tell
    delay 0.2
end repeat
return true
end waitForId


tell application "Safari"
global var
set var to false
if not (exists document 1) then reopen
tell current tab of window 1 to set URL to "https://www.google.com/?client=safari#channel=mac_bm"
tell current tab to activate
log "starting wait"
my waitForId("hplogo")

log "done waiting"
end tell

"hplogo"はテストのためのグーグルサインです。実行時:

error "The variable var is not defined." number -2753 from "var"

ええグローバルは複数の実行にまたがるので、それをしたくない、終わりのために変数が未定義でした)JSコマンドに含めるのではなく現在のタブで(javascriptもの)+にvarを設定することでした
ben

回答:


1

それを考え出して、置き忘れていて、それを可変的で馬鹿げた質問にするためにJavaScriptを連結しました。

on waitForId(idText)
set wait to false
set idText to "\"" & idText & "\""
repeat until wait is true
    tell application "Safari"
        set wait to (do JavaScript "document.contains(document.getElementById(" & idText & "));" in current tab of first window)
    end tell
    delay 0.2
end repeat
return true
end waitForId


tell application "Safari"
set var to false
if not (exists document 1) then reopen
tell current tab of window 1 to set URL to "https://www.google.com/?client=safari#channel=mac_bm"
tell current tab to activate
log "starting wait"
my waitForId("hplogo")

log "done waiting"
end tell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.