кнопка недоступна в e2e

у меня есть кнопка с id= «выход» в моем приложении, когда я использую этот id, чтобы нажать в транспортир я получаю ошибку

it('4 should click Log out', () => {    
         element.all(by.id('logOut')).click();
        browser.driver.sleep(5000);        
    });

мой html

<ion-buttons end>
        <button (click)='signOut()'>
            <ion-icon id="logOut"name="log-out"></ion-icon>
        </button>
    </ion-buttons>

моя ошибка в терминале

should click Log out
      - Failed: unknown error: Element is not clickable at point (1028, 28). Other element would receive the click: <button class="bar-button bar-button-default bar-button-icon-only">...</button>
  (Session info: chrome=50.0.2661.94)
  (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.2 x86_64)
F

3 ответа

  1. Транспортир говорит , что он нашел элемент сid="logOut", но если он пытается нажать на этот элемент, что-то другое в этом месте экрана будет нажата вместо ( button class="bar-button").

    Посмотрите на свою страницу визуально и убедитесь, что нет чего-то перекрывающего вашу кнопку выхода из системы. Или, может быть, вам нужно поставить идентификатор на <button>элемент, а не значок, так что транспортир может нажать правильную вещь.

    Обратите внимание, что это поведение может отличаться в chrome (который кажется более строгим о том, чтобы не иметь возможности нажимать перекрывающиеся элементы) против firefox (который иногда может нажимать элементы, которые ниже других элементов).

  2. Чтобы добавить к @martin770 отличное объяснение, есть элемент, который «зависает» нужный элемент,который вы хотите нажать. Я подозреваю, что это из-за сломанного/измененного макета вашего приложения. Попробуйте развернуть окно браузера, поместите это onPrepare()в свою конфигурацию:

    browser.driver.manage().window().maximize();
    
  3. Так что я недавно столкнулся с похожей проблемой, и размер окна не был проблемой, а он оказался проблемой наложения/фона. Не уверен, если это ваша проблема, но решил, что я бы бросить его там. Вот ссылка на статью Для справки.

    Добавление сна (перечисленного в документах Protractor API ) перед поиском заставило меня двигаться после вращения колес. Наконец-то получил браузер.подождите после обработки потока.

    it('4 should click Log out', () => {
        browser.sleep(1000);
        element(by.id('logOut')).click();        
    });
    
    -or-
    
    var EC = protractor.ExpectedConditions;
    var logoutButton = element(by.id('logOut'));
    browser.wait(EC.elementToBeClickable(logoutButton), 5000);
    logoutButton.click();
    

    Удачи!