2016-06-25 6 views
0

Ich benutze selen-webdriver, warte auf eine Seite zu laden und mit driver.wait (Warten auf ein Tag zu sehen) zu überprüfen.Selenium Handle Timeout driver.wait

Zwei Dinge

  1. Gibt es eine Möglichkeit, den Fehler vom Schlagen der Timeout auf driver.wait (zu stoppen sie vor einem Absturz des Servers) zu behandeln?

  2. Und da ich fange an, diesen Ansatz zu vermuten, ist nicht angebracht, das ist ein guter Ort, nur driver.sleep wäre zu verwenden und dann driver.findElement verwenden zu überprüfen, ob das Etikett vorhanden ist?

Vielen Dank!

Antwort

0

Mit Versprechungen, fand ich eine Lösung für mein Problem:

driver.wait(webdriver.until.elementLocated(webdriver.By.tagName(selector)), 10 * 1000, "Timed out") 
    .catch(function(e){ 
    if (e.message.match("Timed out")){ 
     return e; 
    } else { 
     throw e; 
    } 
    }) 
    .then(function(e){ 
    if (e.message && e.message.match("Timed out")){ 
     driver.quit(); 
    } else { 
     [functional code] 
     }); 
    } 
    }); 

Dies ist etwas unhandlich, da Selen-WebDriver nur throw error verwendet statt einen benannten Fehler bei Timeout. Aber es scheint besser als driver.sleep zu verwenden.