2010-06-28 12 views
5

Uso de Windows 2008, C#, Firefox 3.5.1, selenio RC (v1.0.1)selenio Firefox abierto de tiempo de espera

Cuando funciona, este código se ejecuta muy rápidamente y se carga la página dentro de .5 segundos.

Sin embargo, la sesión siempre parece fallar después de 3 - 5 iteraciones. El comando abrir causará que se genere una ventana, pero no se cargará ninguna página. Finalmente, se devuelve una excepción de tiempo de espera. La página no ha excedido el tiempo de espera. En cambio, es como si la solicitud de una URL nunca hubiera llegado a la ventana del navegador.

class Program 
    { 
     static void Main(string[] args) 
     { 
      for (int i = 0; i < 10; i++) 
      { 
       var s = new DefaultSelenium("localhost", 4444, "firefox", "http://my.server"); 
       s.Start(); 
       s.SetSpeed("300"); 
       s.Open("/"); 
       s.WaitForPageToLoad("30000"); 
       s.Type("//input[contains(@id, '_username')]", "my.test"); 
       s.Type("//input[contains(@id, '_password')]", "password"); 
       s.Stop(); 

      } 
     } 
    } 

Respuesta

2

Tengo un conjunto similar hasta (Firefox 3.6.15, selenio RC 1.0.1, pero en WinXP y el uso de las bibliotecas de Python) y estoy trabajando con un par de sitios - un sitio es naturalmente propenso a tiempos de espera en uso normal (por ejemplo, por un usuario humano) mientras que los otros normalmente no lo son. Los que no aparecen un poco más lentos, pero el que es propenso a los tiempos de espera es significativamente más lento cuando se ejecuta a través de RC que una persona, no siempre se agotará, pero la incidencia es mucho más común.

Mi modelo mental limitado para esto es que de alguna manera los pasos adicionales RC están haciendo (comunicándose con el navegador, verificando lo que ve en las páginas devueltas, etc.) de alguna manera agregan un poco a cada paso de la página y luego en algún momento lo empujarán por el borde. Obviamente esto es demasiado simplificado, simplemente no he tenido tiempo para investigar adecuadamente.

Además, tiendo a notar que el problema empeora con el tiempo, lo cual se ajusta un poco a lo que el OP ha visto (es decir, que funciona la primera vez pero no después de 3 - 5 intentos). A menudo, un reinicio parece solucionar los problemas, pero sin una investigación adecuada no puedo decir por qué esto ayuda, tal vez de alguna manera se está liberando la memoria (la máquina se usa para otras cosas), se asigna a uno de los proxies de nuestra compañía o algo más que no he considerado.

Así que ... no hay una respuesta completa aquí (un comentario habría sido más apropiado, pero mi nombre de usuario aún no puede), pero al menos refuerza que no eres el único. Los reinicios periódicos son algo molesto que hay que hacer, pero a falta de análisis y respuestas más inteligentes, ¿valdría la pena intentarlos?

+0

Recurrimos a una nueva instancia de Selenium y, por lo tanto, instancia de navegador para cada prueba ... no es genial. – Blundell

2

Tenía el mismo problema. Esto se debe a que el método abierto de DefaultSelenium tiene un tiempo de espera de 30000ms, por lo que espera 30 segundos para que se cargue la página. Puedes probar esta solución trivial.

//selenium is DefaultSelenium instance as private member of the class 

      boolean serverStartTry = false; 
     int tryCount =1; 

     while((!serverStartTry) && tryCount <= Constants.maxServerTries){ 
      try{ 
       this.selenium.open(ReadConFile.readcoFile("pageName")); 
       System.out.println("Server started in try no: "+tryCount); 
       serverStartTry =true; 
      }catch (SeleniumException e) { 
       System.out.println("Server start try no: "+tryCount); 
       System.out.println("Server Start Try: "+ serverStartTry); 
       serverStartTry = false; 
       tryCount++; 
      } 
     } 
     if(!serverStartTry){ 
      System.out.println("Server Not started, no. of attempts made: "+tryCount); 
      System.exit(0); 
     } 
1

he resuelto usando:

selenium.setTimeout("60000"); 

antes de la instrucción abierta.

Cuestiones relacionadas