2011-12-20 17 views
7

C'è un modo per impostare la velocità di esecuzione del Selenium Webdriver in ruby.setSpeed ​​in Selenium WebDriver con Ruby

in Perl per il selenio 1 (RC) c'era $sel->set_speed("500");

Ma a causa di alcuni vincoli di selenio RC, ho dovuto passare a selenio WebDriver e ha dovuto iniziare a utilizzare Ruby, e non riesco a trovare la funzione per la stesso.

Leggere da qualche parte le opzioni "Lento", "Medio" e "Veloce" come argomenti per impostare la velocità in C# e Perl, ma non in Ruby.

Nota - I timeout sono impostati con questo @driver.manage.timeouts.implicit_wait = 30 ma sto cercando la velocità di esecuzione.

risposta

10

I metodi per impostare la velocità di esecuzione in WebDriver sono stati deprecati per tutti i collegamenti di lingua qualche tempo fa. Non è più possibile modificare la velocità di esecuzione del codice WebDriver in esecuzione.

+0

Quindi, qual è il modo migliore per risolvere un problema, dove facendo clic su un collegamento si apre un popup e ho bisogno di inviare le chiavi a una casella di testo in quel popup. A volte il caricamento del popup richiede più tempo, a causa del quale il find_element di quell'ID della casella di testo ha esito negativo anche se viene visualizzato. Penso che il tentativo di cercare l'id dell'elemento inizi immediatamente e anche se il popup si carica molto prima di 30 secondi (il mio timeout esplicito), gli script falliscono. – Amey

+1

Hai bisogno di una sorta di routine di attesa esplicita; attese implicite potrebbero non aiutarti qui. Nelle lingue supportate direttamente dal progetto (Java, .NET, Ruby, Python), questo può essere realizzato usando la classe 'WebDriverWait' (o il suo equivalente). Inoltre, la risposta dipende un po 'da cosa intendi per "popup". È una nuova finestra del browser? In tal caso, dovrai utilizzare driver.switch_to.window() per mettere l'attenzione nel contesto corretto. Se si tratta di un "popup" creato da, ad esempio, un framework di widget JavaScript come jQuery o simile, il tuo find_element nella tua attesa routine. – JimEvans

+0

Quindi è una nuova finestra popup, un'autorizzazione Login di LinkedIn per essere più precisi. E faccio spostare i controlli nella nuova finestra, usando handle = @ driver.window_handles @ driver.switch_to.window (handle [1]) ... ma quello che succede è .. il popup può essere come un secondo o due in realtà "pop-up" durante il quale il passaggio alla finestra fallisce, e tutti i passaggi lì su ovviamente falliscono. Al momento ho messo in atto .. un sonno di 2 secondi (tra cliccando sul link e in attesa di passare alla nuova finestra). Ma sono sicuro che c'è un modo migliore. – Amey

0

Secondo il http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb in ci sono 2 metodi modulo Selenium.Client.Idiomatic:

# Get execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay 
    # (value is 0). 
    def execution_delay 
    string_command "getSpeed" 
    end 

    # Set the execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay. 
    # 
    # Setting an execution can be useful to troubleshoot or capture videos 
    def execution_delay=(delay_in_milliseconds) 
    remote_control_command "setSpeed", [delay_in_milliseconds] 
    end 

Suppongo che questo vi aiuterà.

+1

Se non funziona, queste funzioni fanno parte del modulo Idiomatic di Selenium Client, che non è incluso nel modulo Webdriver? Credo. – Amey

+0

Questo è l'errore che ottengo btw 'NoMethodError: metodo non definito' execution_delay 'per # ' – Amey

Problemi correlati