「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