Не удается найти элемент с помощью жасмина (транспортир) - PullRequest
0 голосов
/ 25 марта 2020

Страница входа не является страницей angular, и когда пользователь входит в систему, он / она перенаправляется на домашнюю страницу. На домашней странице используется angular.

Для входа в систему я использовал

        browser.ignoreSynchronization = true;
        var loginTxt = browser.driver.findElement(by.id("userNameInput"));
        var pwdTxt = browser.driver.findElement(by.id("passwordInput"));
        var signInBtn = browser.driver.findElement(by.id("submitButton"));
        loginTxt.sendKeys("test1");
        pwdTxt.sendKeys("password!");
        signInBtn.click();

Пользователь успешно вошел в систему, я использовал следующий код для взаимодействия с элементом в домашняя страница.

        browser.ignoreSynchronization = false;
        var el = element(by.className("btn item-desktop-only inactive-btn"))
        el.click();

Код ошибки: Сообщение: Сбой: Ошибка при ожидании синхронизации транспортира c со страницей: «Обе проверки angularJS и angular не определены Это может быть связано либо с тем, что это страница, отличная от angular, либо с тем, что ваш тест включает в себя навигацию на стороне клиента, которая может помешать загрузке Protractor. Подробнее см. http://git.io/v4gXM "

Когда я удаляю

browser.ignoreSynchronization = false;

, я получаю сообщение об ошибке:

Message:
    Failed: No element found using locator: By(css selector, .btn.item-desktop-only.inactive-btn)
  Stack:
    NoSuchElementError: No element found using locator: By(css selector, .btn.item-desktop-only.inactive-btn)

HTML IS:

<button _ngcontent-vsd-c3="" class="btn item-desktop-only inactive-btn" type="button" ng-reflect-klass="btn item-desktop-only" ng-reflect-ng-class="[object Object]"><img _ngcontent-vsd-c3="" class="orders-icon" src="/assets/icons/orders-inactive.png" srcset="/assets/icons/orders-inactive@2x.png 2x,/assets/icons/orders-inactive@3x.png 3x"> Orders </button>

1 Ответ

0 голосов
/ 25 марта 2020

Из ошибки видно, что домашняя страница не является angular приложением> версии 2.

Продолжить с

browser.ignoreSynchronization = true;

Можете ли вы проверить, правильно ли определен локатор. Пожалуйста, проверьте локатор, найдя его в инструментах разработчика.

Опыт персонала: angular версия приложения <2 работает нормально, имея <code>browser.ignoreSynchronization = true;

Попробуйте подождать, пока локатор не существует.

Вы можете использовать ExpectedConditions в транспортире.

const EC = require('protractor').ExpectedConditions;
let elm = element(by.id('your id'));  
browser.wait(EC.presenceOf(e), 10000); //2nd parameter is the max timeout
expect(e.isPresent()).toBeTruthy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...