2010-06-28 2 views
5

Использование Windows 2008, C#, Firefox 3.5.1, Selenium RC (v1.0.1)Селен Firefox Open таймаут

Когда он работает, этот код выполняется очень быстро и загружает страницы в пределах .5 секунд.

Однако сеанс всегда кажется неудачным после 3 - 5 итераций. Команда open приведет к появлению окна, но ни одна страница не будет загружена. В конце концов возвращается исключение тайм-аута. Страница не была фактически отключена. Вместо этого, как будто запрос на URL-адрес никогда не доходил до окна браузера.

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(); 

      } 
     } 
    } 

ответ

2

У меня есть подобный набор вверх (Firefox 3.6.15, Selenium RC 1.0.1, но на WinXP и с использованием библиотек Python), и я работаю с парой сайтов - один сайт, естественно, склонны к таймауты при нормальном использовании (например, пользователь-пользователь), тогда как другие обычно не являются. Те, которые не появляются немного медленнее, но тот, кто подвержен таймаутам, значительно медленнее, когда работает через RC, чем с человеком - он не всегда будет таймаутом, но частота гораздо более распространена.

Моя ограниченная ментальная модель для этого заключается в том, что каким-то образом выполняются дополнительные шаги RC (связь с браузером, проверка того, что он видит на возвращенных страницах и т. Д.), Как-то добавляет бит на каждый шаг загрузки страницы, а затем в какой-то момент они будут толкать его по краю. Очевидно, что это слишком упрощено, я просто не успел должным образом исследовать.

Кроме того, я, как правило, замечаю, что со временем проблема ухудшается, что немного связано с тем, что видел ОП (т. Е. Работает в первый раз, но не после 3 - 5 попыток). Часто перезагрузка, похоже, устраняет проблемы, но без надлежащего расследования я не могу понять, почему это помогает, возможно, это как-то освобождает память (машина используется для других вещей), получает выделение для другого прокси-сервера нашей компании или что-то еще я не рассматривал.

Итак ... не так много полного ответа здесь (комментарий был бы более уместным, но мой логин пока не в состоянии), но, по крайней мере, он подтверждает, что вы не единственный. Периодические перезагрузки - это надоедливая вещь, которую нужно делать, но при отсутствии более умного анализа и ответов, может быть, они стоили бы выстрела?

+0

Мы прибегли к новому экземпляру Selenium и, следовательно, экземпляру браузера для каждого теста ... не круто. – Blundell

2

У меня была такая же проблема. Это связано с тем, что открытый метод DefaultSelenium имеет тайм-аут 30000 мс, поэтому он ждет 30 секунд для загрузки вашей страницы. Вы можете попробовать это тривиальное решение.

//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

Я решил с помощью:

selenium.setTimeout("60000"); 

перед открытой инструкцией.

Смежные вопросы