脚本超时

脚本超时错误是一个 WebDriver 错误,当用户提供的脚本在会话的脚本超时时间到期之前没有完成时发生。

脚本超时时间是一个可配置的选项,这意味着您可以更改驱动程序中断注入脚本所花费的时间。默认情况下,驱动程序将在中断脚本并返回脚本超时错误之前等待 30 秒,但这可以扩展、限制和设置为无限。

如果会话脚本超时时间使用 null 值设置为无限,则您有将会话置于不可恢复状态的风险。请注意,这应该谨慎使用。

示例

考虑以下异步脚本,该脚本将在 35 秒后解析承诺或调用回调

python
from selenium import webdriver
from selenium.common import exceptions

session = webdriver.Firefox()
try:
    session.execute_script("""
        let [resolve] = arguments;
        setTimeout(resolve, 35000);
        """)
except exceptions.ScriptTimeoutException as e:
    print(e.message)

输出

ScriptTimeoutException: Timed out after 35000 ms

但是,如果您有一个预计会花费更长时间的脚本,则可以通过使用功能来扩展会话的默认脚本超时时间

python
from selenium import webdriver
from selenium.common import exceptions

session = webdriver.Firefox(capabilities={"alwaysMatch": {"timeouts": {"script": 150000}}})
session.execute_script("""
    let [resolve] = arguments;
    setTimeout(resolve, 35000);
    """)
print("finished successfully")

输出

finished successfully

另请参阅