selenium - 测量 Selenium 中多个 Web 元素的加载时间

标签 selenium testing selenium-webdriver automated-tests

我想测量微调器元素的多个部分的加载时间。 HTML 看起来像这样:

<div id="loading">
    <div id="spinner">
        <div class="spinner-icon"></div>
    </div>
    <p class="spinner-text">Please wait</p>
</div>

我对首先加载/显示哪个元素感兴趣?图标?文本?

我在想这样的事情:

Date t1 = new Date();
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("#loading")));
Date t2 = new Date();
long duration = t2.getTime() - t1.getTime();

但是,我可以使用交织等待吗?我可以在单个脚本中执行此操作吗?

最佳答案

正在寻找这样的东西吗?

    long[] loadTime = wait.until(new Function<WebDriver, long[]>() {
        Date start = new Date();
        long[] loadTimes = new long[] { 0, 0, 0, 0 };
        String[] selectors = new String[] { "#loading", "#spinner", "#spinner .spinner-icon", "#spinner .spinner-text" };

        @Override
        public long[] apply(WebDriver t) {
            int invisible = 0;
            for (int i = 0; i < selectors.length; i++) {
                if (!t.findElement(By.cssSelector(selectors[i])).isDisplayed()) {
                    if (loadTimes[i] == 0) {
                        loadTimes[i] = new Date().getTime() - start.getTime();
                    }
                    invisible++;
                }
            }
            return invisible == 4 ? loadTimes : null;
        }
    });

关于selenium - 测量 Selenium 中多个 Web 元素的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921892/

相关文章:

macos - Action 链在Safari浏览器中失败

testing - 如何在 tinytest 和 meteorjs 中使用 Stub 对象?

java - Selenium Web 驱动程序无法定位元素

javascript - Selenium - 在 Bootstrap 模式测试之后,后续测试失败并出现错误 ElementClickInterceptedError

java - 使用 selenium web 驱动程序可以在单个单元格中打印多个值

python - 当我从 div id 中找到元素时,python 中 Selenium 的 Click 方法出错

scala - 玩!框架 : customize which tests are run

java - 使用 GeckoDriver 运行 Java Selenium WebDriver 时 Firefox 无法连接

internet-explorer - selenium webdriver IE 按钮问题

javascript - 从元素JavaScript获取值,错误:implicitly-typed variable