Транспортир не находит тот же элемент после обещания - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь получить текст из элемента в транспортире, и после того, как что-то сделал с текстом, я хочу щелкнуть по тому же элементу.Это то, что у меня есть

HTML:

<span class="span-user" id="spanuser"> {{user?.login}}</span>

Тест транспортира:

describe('Login OK with correct pass', () => {
    it('should login successfully with admin account', () => {
        // logging

        username.clear();
        username.sendKeys('admin');
        password.clear();
        password.sendKeys('admin');
        element(by.css('button[type=submit]')).click();
        // check if the username <span> has the current login username

        const expect2 = /admin/;
        const spanuser = element(by.css('span#spanuser'));
        spanuser.getText().then((value) => {
            console.log('inside');
            console.log(value ? value : 'no value');
            expect(value).toMatch(expect2);
        });
        // then i try to click on the same span, to do some stuff

        spanuser.click().then(() =>  {
            console.log('It has been pressed!');
        });
    });
});

Первая часть работает просто отлично, она проходит тест и проходит ожидание, но когда я пытаюсь выполнить функцию click () на промежутке, я получаю следующую ошибку:

Failed: истекло время ожидания завершения асинхронных угловых задач через 5 секунд.Это может быть потому, что текущая страница не является угловым приложением.Пожалуйста, смотрите FAQ для более подробной информации: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular

Во время ожидания элемента с локатором - Локатор: By (селектор CSS, span # spanuser)

Что я пробовал:

  • browser.waitForAngular () перед spanuser.click ()

  • browser.wait (10000) перед spanuser.click ()

  • также у меня есть waitForAngular () в функции beforeAll.

У кого-нибудь есть идеи по этому поводу?Это не имеет никакого смысла для меня, почему бы не найти тот же элемент, который уже нашел раньше?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

используйте jasmin defaulttimeoutinterval в конфигурации вместо ручного сна

jasmineNodeOpts: {
   defaultTimeoutInterval: 250000
    },
     allScriptsTimeout: 180000
0 голосов
/ 16 мая 2018

добавить browser.waitForAngularEnabled('false') в onPrepare транспортира conf.js

onPrepare: function() {
   browser.waitForAngularEnabled('false')
   // if you set this in onPrepare(), it will be a global setting, will
   // effect all script, so you no need to set it in other place.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...