Подождите, пока элемент будет активным - PullRequest
0 голосов
/ 16 мая 2019

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

Я думаю, что есть проблема синхронизации, потому что, когда я добавляю browser.sleep (5000);тесты пройдены, но проблема в том, что он не стабилен.


    //from homePage.po.ts
    static logOut() {
        const EC = protractor.ExpectedConditions;
        browser.waitForAngular();
        const loader = element(by.className('loader-modal-container'));
        browser.wait(EC.invisibilityOf(loader), 10001);
        browser.waitForAngular();
        browser.driver.findElement((by.id('user-drop-down'))).click();
        (browser.driver.findElement(by.id('log-out'))).click();
        browser.waitForAngular();


      }
    ```
    //login.e2e-spec.ts

    import {LoginPage} from "../pages/login.po";
    import {HomePage} from "../pages/homePage.po";
    import {browser } from 'protractor';


    describe('login page tests', () => {

      beforeEach(function() {
        LoginPage.navigateTo();
      });


     it('successful logout', () => {
        LoginPage.logIn();
        HomePage.logOut();
        expect(browser.driver.getCurrentUrl()).toMatch(LoginPage.loginPageUrl);
      });
    });
    ````
    //component.html 
     <div class="top-bar-menu">
        <div class="top-bar-menu-item" id="user-drop-down"(click)="op1.show($event,opshow)" >
            <div class="user-dropdown" #opshow  >
              <span id="user-dot" class="top-bar-dot dot semi-bold">{{given_name.substring(0,1).toUpperCase()}}{{family_name.substring(0,1).toUpperCase() }}</span>
              {{ given_name+' '+family_name }}
            </div>
        </div>


     NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"*[id="user-drop-down"]"}
        (Session info: chrome=74.0.3729.131)
        (Driver info: chromedriver=2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT 10.0.16299 x86_64)

Ответы [ 2 ]

0 голосов
/ 16 мая 2019
NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"*[id="user-drop-down"]"}
        **(Session info: chrome=74.0.3729.131)
        (Driver info: chromedriver=2.46.628402** (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT
10.0.16299 x86_64)

Chrome driver and browser compatibility

Я подозреваю, что причиной вашей проблемы может быть несовместимость версий драйверов и версий Chrome. Поскольку Chrome Driver 2.46 поддерживает v71-73, а вы используете v74. Мы также заметили, что есть много очевидных примеров этого. Я бы посоветовал сначала убедиться в совместимости диска и браузера Chrome, прежде чем запускать какой-либо тестовый пример.

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

Попробуйте вот так .. Исполнитель Javascript на кнопке выхода из системы ...

browser.driver.findElement((by.id('user-drop-down'))).click();
browser.waitForAngular();
browser.executeScript("document.getElementById('log-out').click()");
browser.waitForAngular();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...