【问题标题】:When the page load for the first time , webdriver takes a long time to find the first element第一次加载页面时,webdriver需要很长时间才能找到第一个元素
【发布时间】:2014-08-17 07:47:16
【问题描述】:

我正在使用 selenium webdriver / java 进行应用程序测试,我遇到了一个奇怪的问题。

当我得到一个 URL,然后尝试查找或等待一个元素时,执行那将近 6 分钟需要很长时间。

driver.manage().timeouts().pageLoadTimeout(90, TimeUnit.SECONDS);

driver.get(getApplicationURL());

Boolean isPresent = driverUtil.waitAndCheckPresent(20,By.xpath(<my xpath>));
.......................................................
 .................................................



      public boolean waitAndCheckPresent(int timeout, By by){

        try {
            WebDriverWait wait = new WebDriverWait(driver, timeout);
            WebElement elem = wait.until(ExpectedConditions
                    .visibilityOfElementLocated(by));
            return true;
        } catch (Exception e) {
            return false;  
        }

    }

详情:- FF 版本:- 17-24 网络驱动程序:- 2.35.0

我不知道为什么它在继续之前挂了这么久,正如我提到的,我只在页面第一次加载时看到这个,[作为登录页面的页面在 10 秒内出现输入字段]

【问题讨论】:

  • 调试并检查哪一行花费了这么多时间
  • 调试后我发现..只要有一个 driver.find() ,或者控件正在等待某个元素,它就无法找到它...即使该元素存在并且只有当 UI 登录页面出现并且主页页面加载时才会发生这种情况,之后它才能顺利运行....
  • 检查服务器(即您启动的 Selenium Server JAR)正在做什么。它会记录它处理的每个请求和响应。看看它卡在哪里。

标签: java firefox selenium automation webdriver


【解决方案1】:

您仍然可以通过等待预期元素的存在(不等待可见性)5-8 秒,然后发送 window.stop() JS 脚本(停止加载)来加速脚本执行更多元素),无需等待整个页面加载 或在 5-8 秒后捕获页面加载超时异常,然后调用 window.stop()

因为如果页面没有采用延迟加载技术(仅加载可见元素并仅在滚动后加载其余元素)它会在返回 window.ready 状态之前加载每个元素,因此如果任何元素需要更长的时间来加载它会变慢渲染。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    相关资源
    最近更新 更多