Измерьте время загрузки нескольких веб-элементов в Selenium - PullRequest
0 голосов
/ 28 февраля 2019

Я бы хотел измерить время загрузки нескольких частей вращающегося элемента.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();

Но можно ли использовать переплетенные ожидания?Могу ли я сделать это одним скриптом?

1 Ответ

0 голосов
/ 28 февраля 2019

Ищете что-то подобное?

    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;
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...