Selenium RC + Hudson - 测试在本地运行,但与 Hudson 一起运行时超时

软件测试 自动化测试
2022-01-24 14:02:27

Selenium RC 遇到了一个奇怪的问题。我有一个测试,当我在默认端口上手动运行我的 selenium 服务器时,它运行得非常好。测试在几秒钟内通过。但是,由于我的测试是在 hudson 下的远程机器上运行的,所以我通过一个名为 nssm 的实用程序在后台将我的 selenium 服务器作为 Windows 服务运行。

当我通过在后台运行的服务器运行相同的测试时,它会因超时而失败。测试不应该花费太多时间来运行。这是我写的测试

_selenium.Click("http://www.myurl.com/mypage.aspx");
_selenium.Type("Locator", "Value");
_selenium.Click("SaveLink");
_selenium.WaitForPageToLoad("30000");
3个回答

尝试增加pageLoad,即-

 _selenium.WaitForPageToLoad("60000");

b/w 我建议您不要硬编码等待期并从方法中读取它,这样您就可以在一个地方修改它并在所有实例中反映它。

问题其实已经解决了。通过打开普通浏览器窗口通过服务器运行我的测试时,自动填充了我所需的选择下拉列表之一。当我试图通过在后台运行的服务器运行我的测试时,下拉菜单没有采用默认值。我手动设置了下拉值,我的测试通过了。

@Ashish - 我已经解决了问题。有时,

selenium.WaitForPageToLoad("30000");

失败的。解决我正在分享的问题,这对我真的有用

工作解决方案:

static void waitForPageLoad(WebDriver wdriver) {
    WebDriverWait wait = new WebDriverWait(wdriver, 60);

    Predicate<WebDriver> pageLoaded = new Predicate<WebDriver>() {

        @Override
        public boolean apply(WebDriver input) {
            return ((JavascriptExecutor) input).executeScript("return document.readyState").equals("complete");
        }

    };
    wait.until(pageLoaded);
}

试试吧 !