如何避免在selenium web驱动程序中等待后台请求?

时间:2012-05-29 18:59:45

标签: selenium web driver

我刚开始使用Selenium Web Driver来测试在线银行交易应用程序。

我喜欢它,但有些东西让我恼火。假设我使用以下代码访问登录屏幕:

    driver.get("https://webdev.myurl:18113/");
    WebElement element = driver.findElement(By.name("username"));
    element.sendKeys("xxxx");
    element.submit();

浏览器启动和页面加载和显示。但它看起来像是从外部站点尝试加载元素,而findElement(第二行)等待这些请求完成!

有没有办法绕过这个行为?

我也试过了:

    WebElement element = (new WebDriverWait(driver, 10)).until(new  ExpectedCondition<WebElement>() {
        @Override
        public WebElement apply(WebDriver d) {
            return d.findElement(By.name("username"));
        }
    });

但它没有帮助,因为这条线似乎只在页面完全加载时执行。

编辑:我和其中一个人交谈过......他告诉我ipinvite.iperceptions.com不是我们的应用程序调用的。事实上,当我在FF加载网站时,我没有看到这个电话?!

Selenium网络驱动程序是否会调用此站点:ipinvite.iperceptions.com?

任何人都有同样的问题吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试将隐式等待时间和页面加载时间设置为0.谷歌“selenium隐式等待时间”和“selenium页面加载时间。”

答案 1 :(得分:0)

get功能的超时时间尚未实现。 在创建新的FirefoxDriver时,构造函数中存在重载,允许您指定命令超时,这是等待每个命令的最长时间。

您可以参考post

上的答案

答案 2 :(得分:-3)

好的,我发现了问题。我将setPreference注释掉了我正在设置代理参数的FirefoxProfile。我注意到我无论如何都不需要它们。而现在已经没有人再打电话给这个奇怪的ipinvite.iperception.com了!

感谢您回复的时间

此致