「script_timeout」を実行することで、javascript実行が終了するまでの待ち時間を設定することが出来ます。
下記サンプルでは、指定したドライバに対して「script_timeout」を実行しています。「script_timeout」に数値(秒数)を代入することで指定した待ち時間の間、javascript実行が終了するまで待機します。 仮にjavascript実行時間が「script_timeout」に代入した待ち時間を超えた場合は、ScriptTimeOutErrorが発生してしまいます。
説明
◆メソッド ・script_timeout ◆使用形態 ・driver.manage.timeouts.script_timeout = 10 ◆備考 ・待ち時間には秒数を指定 ・非同期スクリプトの待ち時間を設定する ・設定した待ち時間を越えてjavascriptが動作していた場合ScriptTimeOutErrorが発生する ◆関連項目 ・指定したドライバの要素が見つかるまでの待ち時間を設定する ・ページがロードされるまでの待ち時間を設定する
サンプル
require 'selenium-webdriver'
# Firefoxを起動
driver = Selenium::WebDriver.for(:firefox)
#Javascript実行が終了するまで最大5秒間待つように指定
driver.manage.timeouts.script_timeout = 5
#現在時刻を取得
startTime = Time.now
#指定時間待機する非同期スクリプト(ここでは3秒待機)
driver.execute_async_script('window.setTimeout(arguments[arguments.length - 1], 3000);')
#3秒後に再び時刻を取得
stopTime = Time.now
#差分の時間を表示する
print(stopTime - startTime)※selenium version 4.1.0で動作確認をしています
実行結果
3.017024
