【问题标题】:alternative for waitForPageToLoad in SeleniumSelenium 中 waitForPageToLoad 的替代方案
【发布时间】:2010-11-15 04:35:20
【问题描述】:

我在页面上有一系列链接需要不同的时间来加载...我想捕获每个链接所花费的时间...我遇到的问题是 waitForPageToLoad 时间如果超过会导致测试失败并且我的其余链接没有得到测试......我知道我可以跳过测试中的可疑链接或设置超出预期的时间限制,但我希望有一个替代 waitForPageToLoad 的方法可以用来在 Selenium 中加载页面时陷阱,因此如果页面加载时间超过一分钟,它不会结束脚本。

【问题讨论】:

    标签: time event-handling selenium


    【解决方案1】:

    Wawa 的回答对我很有用,我只需要将增量添加到第二个 var。

    我也只想等待 5 秒,所以我更改了中断条件。

    int second = 0;
    while(!selenium.IsElementPresent(mylink))
    {
        if(second >= 5) 
            break;
        Thread.Sleep(1000);
        second++;
    }
    

    【讨论】:

      【解决方案2】:

      这是我会使用的:

      int second = 0;
      while(!selenium.IsElementPresent(mylink))
      {
          if(second >= 300) 
              break;
          Thread.Sleep(1000);
      }
      

      您真的不需要\想要 try-catch(异常)块,因为 IsElementPresent 不应该抛出异常。

      【讨论】:

        【解决方案3】:

        所以听起来我可能需要导出到 perl 或 java 才能获得我正在寻找的功能。但是,waitForElementPresent 确实有很大帮助。谢谢:-)

        类似...

            for (int second = 0; ; second++) {
                if (second >= 300) break;
                try {if (selenium.isElementPresent( mylink )) break;} 
                catch (Exception e) {}
                Thread.sleep(1000);
            }
        

        【讨论】:

        • 如果您可以导出,那么它总是值得的。从 Selenium Core/IDE 有一个 setTimeout 调用,它将将该测试用例的超时设置为一个值,如果在此之前出现某些内容,那么它将继续
        【解决方案4】:

        执行此操作的最佳方法是将超时设置为远在未来的数字,因为 30 秒是 selenium 的默认超时。

        setTimout | 300
        

        然后你可以在下一页上对一个对象进行waitForElementPresent调用,如果你不想这样做waitForPageToLoad

        【讨论】:

        • waitForElementPresent 让我很接近,但如果需要 5 分钟,我还需要超时来结束链接测试,我需要它来继续脚本并测试其余链接等。
        • 那么你总是必须使用 setTimeout 的值在很远的将来
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 2015-03-03
        • 2015-09-25
        • 2019-12-16
        相关资源
        最近更新 更多