Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Skript-Timeout

Der Skript-Timeout-Fehler ist ein WebDriver-Fehler, der auftritt, wenn ein vom Benutzer bereitgestelltes Skript nicht abgeschlossen wurde, bevor die Skript-Timeout-Dauer der Sitzung abgelaufen ist.

Die Skript-Timeout-Dauer ist eine konfigurierbare Fähigkeit, was bedeutet, dass Sie ändern können, wie lange es dauert, bevor der Treiber ein eingefügtes Skript unterbricht. Der Treiber wartet standardmäßig 30 Sekunden, bevor er das Skript unterbricht und mit einem Skript-Timeout-Fehler zurückkehrt. Diese Dauer kann jedoch sowohl verlängert, verkürzt als auch auf unbestimmte Zeit eingestellt werden.

Wenn die Skript-Timeout-Dauer der Sitzung durch Verwendung eines null-Wertes auf unbestimmte Zeit eingestellt ist, besteht das Risiko, die Sitzung in einen nicht wiederherstellbaren Zustand zu versetzen. Seien Sie sich bewusst, dass dies mit Vorsicht verwendet werden sollte.

Beispiel

Betrachten Sie das folgende asynchrone Skript, das das Versprechen nach 35 Sekunden erfüllt oder den Callback aufruft:

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)

Ausgabe:

ScriptTimeoutException: Timed out after 35000 ms

Es ist jedoch möglich, den Standardskript-Timeout der Sitzung zu verlängern, indem Sie Fähigkeiten verwenden, wenn Sie ein Skript haben, das voraussichtlich länger dauern wird:

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")

Ausgabe:

finished successfully

Siehe auch