Selenium - следите за индикатором быстрой загрузки - PullRequest
0 голосов
/ 03 декабря 2018

Мне нужно протестировать таблицу данных, которая при каждом изменении имеет индикатор загрузки.Иногда этот показатель очень быстрый.Есть ли лучшая практика для селена, чтобы следовать этим очень быстрым изменениям пользовательского интерфейса?(Например, индикатор загрузки).

1 Ответ

0 голосов
/ 03 декабря 2018

Я использую следующий c #, чтобы запросить у dom идентификаторы и классы с известными значениями загрузки и жду, пока их не будет.Использование driver.FindElement (By *) пытается объявить, что элемент присутствует в данном идентификаторе, а не его поиск, что приведет к ошибкам, а не к поведению, которое мы ищем.

public IWebDriver WaitForPage()
    {// Query document for loading elements until none found
        var wait = new WebDriverWait(driver,MyDefaultTimeout)
        .Until( 
            e => ((IJavaScriptExecutor)e) 
                .ExecuteScript(@"
                    var MyDefaultTimeout = 500; 
                    var loaded = false;
                    do {
                        var elementClasses = document.getElementsByClassName('//*[contains(@class=\'is-loading\') or contains(@class=\'fa-gear\') or contains(@class=\'loading\') and not(@class=\'displayed\')]');
                        var elementIds = document.getElementById('//*[contains(@id=\'hover-gear\') or contains(@id=\loading-gear\')]');
                        if((!elementClasses === null) || (!elementIds === null)){
                            setTimeout(function() { loaded = false }, MyDefaultTimeout);
                            }
                        else{ 
                            if(!document.readyState === 'complete'){
                                setTimeout(function() { loaded = false }, MyDefaultTimeout);
                                }
                            else{ 
                                loaded = true;
                                return document.readyState;
                                }
                            }
                        }
                    while(loaded === false);", null))
                .Equals("complete");
        return driver;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...