如何有效处理Selenium超时?

时间:2011-07-19 18:26:51

标签: selenium

Selenium.WaitForPageLoad("50000"); 
Selenium.Click("title");

大多数情况下,当它超过50000时,我会收到Timeout错误。我不想增加时间。有没有办法给它“像你想要的那样长时间”?

4 个答案:

答案 0 :(得分:1)

您确定要花费多长时间吗?它可能会整天挂起......

我经常发现,如果运行需要很长时间,那么很久以前就已经失败了。

之前我使用过WatiN,您可以使用.WaitUntil()命令检查页面上的特定元素是否已加载。不确定Selenium中的等价物是什么。

如果您愿意创建加载项,此链接可能会有所帮助:

http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/Wait.html

答案 1 :(得分:1)

我不推荐它,但是如果你想让selenium无限期地等待,请使用try-catch块和循环:

while (true)
{
   try
   {
       Selenium.WaitForPageLoad("5000");
       break; //executed if page finished loading
   }
   catch (Exception)
   {
       //ignore the timeout exception
   }
}

再次这可能是一个坏主意,超时通常是一件好事。根据您的尝试,您可能需要考虑检查特定元素是否已完成加载而不是整个页面。

答案 2 :(得分:0)

您是否尝试颠倒这些命令的顺序?

Selenium.Click("title");
Selenium.WaitForPageToLoad("50000"); 

或者只是使用:

Selenium.ClickAndWait("title");

答案 3 :(得分:0)

这对我有用

   /**
    * Put the Thread to Sleep for the specific time
    * @param delay
    */
   private void sleep(long time) {
      try {
         Thread.sleep(time);
      } catch (InterruptedException e) {
      }
   }

   //Inside my Test Method

   //check if the element is loaded
   while (!webElement.isLoaded) {
        //sleep for a sec
         sleep(1000);
      }