Ошибка выброса жасмина: тайм-аут - асинхронный обратный вызов не был вызван в течение тайм-аута, указанного в jasmine.DEFAULT_TIMEOUT_INTERVAL - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь автоматизировать следующий Instagram.Я захожу в профиль и нажимаю на ссылку подписчиков.Он открывает модальный тип div и есть все последователи.Сначала он находит все следующие кнопки в DOM и нажимает на них.После этого он прокручивает страницу вниз и находит в DOM другие кнопки следования и нажимает на них.Но после прокрутки 2-3 раза автоматизация останавливается и выдает эту ошибку.

! Scrollable Div Image: https://imgur.com/6s3nGJs

Прикрепление кода ниже для сбора следующих кнопок и нажатия на них:

element(by.xpath("//div[@role='dialog']")).element(by.tagName("ul")).all(by.buttonText("Follow")).then(links => {
            console.log("Links Length" + links.length);
            if (links.length == 0) {
                this.ScrollDown();
            }
            else {
                for (let i = 0; i < links.length; i++) {
                    if (i >= links.length - 2) {
                        console.log("Scrolling Down");
                        browser.actions().sendKeys(protractor.Key.PAGE_DOWN).perform().then(function(){
                            console.log("Scrolled");
                            browser.sleep(3000);
                        });
                        break;
                    }
                    else {
                        browser.actions().mouseMove(links[i]).click().perform().then(function () {
                            console.log("Clicked on link " + (i + 1));
                            browser.sleep(3000);
                        });
                    }
                }
                this.followProfiles();
            }
        });

ScrollDown:

console.log("Scrolling Down");
        browser.wait(browser.actions().sendKeys(protractor.Key.PAGE_DOWN).perform().then(function () {
            console.log("Scrolled down");
        }), 90000);
        browser.sleep(5000);
        this.followProfiles();

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

Вы можете использовать функцию нажатия js, чтобы щелкнуть, что вы хотите. если элемент присутствует и имеет ширину и высоту (элемент не может быть отображен), вы можете использовать эту функцию для прямого щелчка по элементу htlm. click () : эта функция является функцией транспортира, действие этой функции аналогично щелчку левой кнопкой мыши, поэтому элемент только что присутствовал и отображался. Но функция щелчка js может щелкнуть элемент html, когда элемент только что присутствует, хотя элемент не может быть отображен. функция щелчка js:

browser.executeScript ( "аргументы [0] .click ();", geocoding_switcher.getWebElement ());

Кроме того, транспортир обычно работает быстро, поэтому вы должны использовать функцию нажатия js, чтобы щелкнуть по всей кнопке «Follow» в списке, она отлично запускает тест, не требует прокрутки к элементу. В js есть много функций прокрутки. такие как:

browser.executeScript ("arguments [0] .scrollIntoView ();", category_label.getWebElement ());

0 голосов
/ 31 мая 2019

Это потому, что ваш тест занимает больше времени, чем установленное по умолчанию время ожидания для жасмина. Чтобы увеличить это вы можете добавить ниже в вашем конфигурационном файле транспортира jasmineNodeOpts: { defaultTimeoutInterval: 480000 // что равняется 6 минутам // вы можете увеличить его, если ваш тест займет больше времени, чем этот }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...