2014-04-04 14 views

Antwort

3

Ich weiß, ich bin ein paar Jahre zu spät, und @JaneGoodall ist nicht falsch - es gibt keine integrierte Funktion dafür. Aber es ist nicht unmöglich!

Es ist nicht sehr schwierig, eigene Versionen der WebDriver-Schnittstelle und der browserspezifischen Treiberklasse zu erstellen. Und dann können Sie den gewünschten Code in den Treiber einfügen!

Beispiel:

MyDriver.java (spezialisierte Version von WebDriver, nicht ganz zwingend, aber eine sehr gute Idee):

public interface MyDriver extends WebDriver { 
    void setWait(int timeout); 
    int getWait(); 
} 

MyChrome.java (spezialisierte Version von ChromeDriver - funktioniert genauso für jeder Browser)

public class MyChrome extends ChromeDriver implements MyDriver { 
    int timeout = 0; 
    public void setWait(int timeout) { 
     this.timeout = timeout; 
     this.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS); 
    } 
    public int getWait() { 
     return timeout; 
    } 
} 

Und nun, es zu benutzen, MyProgram.java:

public class MyProgram { 
    MyDriver driver = new MyChrome(); 
    driver.setWait(10); 
    assert(driver.getWait() == 10); 
} 

Ich hoffe, das ist hilfreich!

+0

Es wäre viel einfacher, nur die gewünschte Wartezeit einzustellen Zeit, die eine Variable verwendet. Dann können Sie jederzeit auf die Variable verweisen. – JeffC

+0

Sicher, aber manchmal müssen Sie diesen Wert mit dem Treiberobjekt selbst verpacken.Diese Lösung ist viel sauberer, als eine Variable an den Ort des Treibers zu übergeben . – forresthopkinsa

1

Für diejenigen, die von Google hierher kamen. Im Jahr 2018 scheint es, wie es ein Verfahren ist, diese Timeouts zumindest in Javascript zu bekommen (ich weiß Frage zu Java war):

const {implicit, pageLoad, script} = await driver.manage().getTimeouts(); 

Hope this helfen.

Verwandte Themen