WebDriver ignora la espera - Firefox, Python -- python campo con firefox campo con selenium-webdriver campo con webdriver campo con wait camp Relacionados El problema

Webdriver Ignores Wait - Firefox, Python


1
vote

problema

Español

Después de cambiar recientemente mi sistema operativo a Debian Wheezy (KDE) mi WebDriver, se comporta extraño (Codificado en Python 2.7 para Firefox, todos los módulos están actualizados).

ignora completamente los comandos de espera, como implícitly_wait (). Esto es altamente problemático si una espera es criticamente necesaria para acceder. Cargando elementos web.

Una solución sucia es usar el tiempo.Sleep (), que es funcional pero Ciertamente, no, cómo se pretende usar WebDriver.

El siguiente código ejemplifica mi problema:

  from selenium import webdriver import time  driver = webdriver.Firefox()  driver.get('http://www.google.com')  tc = time.clock() tw = time.time()  driver.implicitly_wait(60)  # should halt here for 60s  print "CPU time: ", time.clock() - tc print "Wall time: ", time.time() - tw  driver.quit()   

El script se ejecuta concluye sin ningún mensaje de error, todavía La declaración de espera es totalmente ignorada.

Salida:

  CPU time:  0.0 Wall time:  1.1845741272   

No tengo ninguna explicación para este comportamiento misterioso o cualquier punto de partida para buscar una respuesta.

Por lo tanto, por lo tanto, doy una cálida bienvenida a cualquier sugerencia o soluciones. ¡Gracias!
Original en ingles

After recently changing my OS to Debian Wheezy(KDE) my webdriver, behaves odd. (Coded in python 2.7 for firefox, all modules are up to date.)

It completely ignores wait commands, such as implicitly_wait(). This is highly problematic if a wait is critically needed to access loading web elements.

A dirty workaround is to use time.sleep(), which is functional but certainly not how webdriver is intended to be used.

The following code exemplifies my problem:

from selenium import webdriver import time  driver = webdriver.Firefox()  driver.get('http://www.google.com')  tc = time.clock() tw = time.time()  driver.implicitly_wait(60)  # should halt here for 60s  print "CPU time: ", time.clock() - tc print "Wall time: ", time.time() - tw  driver.quit() 

The script run concludes without any error message, yet the wait statement is entirely ignored.

Output:

CPU time:  0.0 Wall time:  1.1845741272 

I have no explanation for this mysterious behavior or any starting point to look for an answer.

I therefore warmly welcome any suggestions or solutions. Thanks!

              

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

No, dataType:"json";5 no detendría / detendría la ejecución en el momento en que lo llamas. Se llama una vez por sesión y establece el tiempo de espera implícito utilizado, mientras que Selenium está encontrando un elemento o ejecutando un comando, cita de la documentación :

dataType:"json";6

Establece un tiempo de espera pegajoso para esperar implícitamente que se encuentre un elemento, o un comando para completar. Este método solo debe llamarse una vez. por sección. Para configurar el tiempo de espera para las llamadas a ejecutar_async_script, consulte set_script_timeout.

Estoy de acuerdo en que el nombre del método es un poco confuso, dataType:"json";7 probablemente sería una mejor opción.

también ver:

  • ¿Qué es la diferencia entre implícito? esperar vs. Espera explícita en selenio webdriver?
  • waits explícitos e implícitos
 

No, implicitly_wait() would not stop/halt the execution at moment you call it. It is called once per session and sets the implicit timeout used while selenium is finding an element or executing a command, quote from the documentation:

implicitly_wait(time_to_wait)

Sets a sticky timeout to implicitly wait for an element to be found, or a command to complete. This method only needs to be called one time per session. To set the timeout for calls to execute_async_script, see set_script_timeout.

I agree that the method name is a bit confusing, set_implicit_timeout() would probably be a better choice.

Also see:

  • What is difference between Implicit wait Vs. Explicit wait in selenium webdriver?
  • Explicit and Implicit Waits
 
 
 
 

Relacionados problema

2  ¿Haciendo una función para esperar un evento antes de regresar?  ( Making a function to wait an event before returning ) 
function myFunction() { wait(); //what I put there? return; } myFunction(); //this is an event; when its triggered I want function to resume onSom...

1  ¿Vale la pena usar selenium com.thughtworks.selenium.wait clase para esperar? (Actuación)  ( Is it worth to use selenium com thoughtworks selenium wait class for waiting p ) 
selenium tiene clase com.thughtworkworks.selenium.wait para la conveniencia. Lo uso en la siguiente manera: <?xml version="1.0" encoding="UTF-8"?> <!DOCT...

2  ¿Puedo hacer que Selenium Webdriver espere antes de cada acción? (Para fines de depuración)  ( Can i make selenium webdriver wait before every action for debugging purposes ) 
Estoy trabajando en un proyecto BDD. A veces las pruebas son demasiado rápidas para que los desarrolladores vean lo que está sucediendo cuando los ejecutan. ...

1  ¿Cómo esperar para los múltiples procesos remotos (a través de SSH) para terminar?  ( How to wait for multiple remote processes via ssh to finish ) 
Mi situación es que tengo una serie de procesos que se supone que deben comenzar (más o menos) al mismo tiempo en diferentes hosts remotos. Un script maestro,...

1  Java Sincronizar el ciclo con devoluciones de llamada  ( Java synchronize cycle with callbacks ) 
Tengo esta función que descarga todos los archivos en el Lista de Array y quiero hacer esto "síncrono", quiero decir que quiero descargar solo un archivo en e...

0  Jquery espera / cargando página  ( Jquery wait page loading ) 
Esta pregunta es más que un diálogo de "espera", básicamente tengo un servicio de búsqueda que puede tardar varios segundos en cargarse. Por lo tanto, comenza...

139  Selenium espera hasta que el documento esté listo  ( Selenium wait until document is ready ) 
¿Puede alguien dejarme cómo puedo hacer que Selenium espere hasta el momento en que la página se carga completamente? Quiero algo genérico, sé que puedo confi...

4  Android: espere () el hilo principal, mientras que un cuadro de diálogo obtiene entrada en un hilo separado  ( Android wait the main thread while a dialog gets input in a separate thread ) 
Estoy escribiendo una actividad en Android donde el usuario modifica una base de datos SQL. La UI consiste en un editText en el que el usuario ingresa al nomb...

-1  Apple / BSD: estado = 2943 de waitepid?  ( Apple bsd status 2943 from waitpid ) 
Soy Ptrace'ing un proceso. Después de la horquilla / EXECL y luego un wait en el niño, estoy obteniendo un estado de 2943. Estoy probando el fracaso, pero ...

225  ¿Cómo decirle a PowerShell para esperar a que termine cada comando antes de comenzar el siguiente?  ( How to tell powershell to wait for each command to end before starting the next ) 
Tengo un script PowerShell 1.0 para abrir un montón de aplicaciones. La primera es una máquina virtual y las otras son aplicaciones de desarrollo. Quiero que ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos