2014-04-04 15 views

risposta

3

So di essere un paio di anni di ritardo, e @JaneGoodall non è sbagliato - non v'è alcuna funzione built-in per questo. Ma è non impossibile!

Non è molto difficile creare le proprie versioni dell'interfaccia WebDriver e della classe di driver specifica del browser. E poi, puoi inserire il codice che vuoi nel driver!

Esempio:

MyDriver.java (versione specializzata di WebDriver, non proprio obbligatorio, ma una buona idea):

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

MyChrome.java (versione specializzata di ChromeDriver - funziona lo stesso per qualsiasi 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; 
    } 
} 

E ora, usarlo, MyProgram.java:

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

Spero che questo sia utile!

+0

Sarebbe molto più semplice impostare l'attesa desiderata tempo usando una variabile, quindi puoi fare riferimento alla variabile ogni volta che vuoi. – JeffC

+0

Certo, ma a volte hai bisogno di quel valore per essere impacchettato con l'oggetto driver stesso.Questa soluzione è molto più pulita che passare una variabile intorno a dove viene usato il driver . – forresthopkinsa

1

Per coloro che sono venuti qui da Google. Nel 2018 sembra che ci sia un metodo per ottenere quelle timeout almeno in javascript (so domanda riguardava java):

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

Spero che questo vi aiuterà.

Problemi correlati