2011-12-20 23 views
7

¿Hay alguna manera de establecer la velocidad de ejecución de Selenium Webdriver en ruby?setSpeed ​​en Selenium WebDriver usando Ruby

en Perl para el selenio 1 (RC) no había $sel->set_speed("500");

Pero debido a algunas limitaciones de selenio RC, tuve que cambiar a Selenio WebDriver y tuvo que comenzar a usar Ruby, y no puedo encontrar la función para la mismo.

Lea en algún lugar las opciones "Lento", "Medio" y "Rápido" como argumentos para establecer la velocidad en C# y Perl, pero no en Ruby.

Nota: Tengo tiempos de espera establecidos con este @driver.manage.timeouts.implicit_wait = 30 pero estoy buscando la velocidad de ejecución.

Respuesta

10

Los métodos para establecer la velocidad de ejecución en WebDriver quedaron obsoletos para todas las vinculaciones de idiomas hace algún tiempo. Ya no es posible modificar la velocidad de ejecución del código WebDriver en ejecución.

+0

¿Cuál es la mejor manera de resolver un problema, cuando al hacer clic en un enlace se abre una ventana emergente? , y necesito enviar claves a un cuadro de texto en esa ventana emergente. La ventana emergente a veces tarda más en cargarse, debido a lo cual el elemento find de esa ID de cuadro de texto falla aunque aparezca. Creo que el intento de buscar el identificador de elemento se inicia de inmediato y, aunque la ventana emergente se carga mucho antes de los 30 segundos (mi expiración explícita), los guiones fallan. – Amey

+1

Necesita algún tipo de rutina de espera explícita; las esperas implícitas pueden no ayudarte aquí. En los idiomas admitidos directamente por el proyecto (Java, .NET, Ruby, Python), esto se puede lograr utilizando la clase 'WebDriverWait' (o su equivalente). Además, la respuesta depende un poco de lo que quieres decir con "popup". ¿Es una nueva ventana del navegador? Si es así, deberá usar driver.switch_to.window() para poner su foco en el contexto correcto. Si se trata de una "ventana emergente" creada por, digamos, un marco de widgets de JavaScript como jQuery o similar, tu elemento de búsqueda en tu rutina de espera. – JimEvans

+0

Es una nueva ventana emergente, una autorización de inicio de sesión de LinkedIn para ser más preciso. Y cambio los controles a la nueva ventana, usando handle = @ driver.window_handles @ driver.switch_to.window (maneja [1]) ... pero lo que sucede es ... las tomas de ventana emergente pueden ser como un segundo o dos para realmente "emergente" durante el cual el cambio a la ventana falla, y todos los pasos allí obviamente fallan. Actualmente he puesto en marcha ... un sueño de 2 segundos (entre hacer clic en el enlace y esperar para cambiar a la nueva ventana). Pero estoy seguro de que hay una mejor manera. – Amey

0

De acuerdo con la http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb en que hay 2 métodos módulo 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 

supongo que esto ayudará.

+1

¿No es eso que no funciona, estas funciones son parte del módulo Selenium Client Idiomatic, que no está incluido en el módulo Webdriver? Creo. – Amey

+0

Este es el error que obtengo por cierto 'NoMethodError: método indefinido' execution_delay 'para # ' – Amey

Cuestiones relacionadas