Получить атрибут класса div из другого класса div для теста углового транспортира - PullRequest
0 голосов
/ 15 октября 2018

Я очень новичок в тесте Угловой транспортир.В моем приложении я внедряю платформу Protractor для автоматизации тестирования.Теперь у меня есть шаг, где появляется диалоговое окно на основе нажатия кнопки.Внутри диалога есть содержимое диалога, которое содержит два элемента div.Один показывает, успешно ли загружена диаграмма, другой будет отображаться при наличии сообщения об ошибке.Теперь я хочу реализовать условие if-else, которое бы проверяло, какой контент доступен в данный момент.Но проблема в том, что если условие не выполняется.Он всегда переходит в другое условие, даже если существует ошибка-содержимое.

Вот мой класс компонента диалога

<div class="action-row-align dialog-component">
<div class="dialog-content" mat-dialog-content >
    <div *ngIf="isLoading && !errorText" class="loading-content">
        <mat-spinner></mat-spinner>
        <h6>{{ loadingInfoText }}</h6>

    </div>
    <div class="error-content" *ngIf="!isLoading && errorText" >
        <mat-card>
            <mat-card-title>{{ 'Error' | translate }}</mat-card-title>
            <mat-card-content>{{ errorText }}</mat-card-content>
        </mat-card>

    </div>

 </div>

Мой метод hasClass равен

    export class Utility {
    static hasClass = (element, className) => element.getAttribute('class').then((classes) => classes.split(' ').indexOf(className) !== -1)
}

И вот мое тестовое состояние

let dialog = element(by.css('.dialog-component'));
let dialogContent = element(by.css('.dialog-content'));
        await click.onto(option);
        await expect(dialogContent.isDisplayed()).toBe(true);
        if (await Utility.hasClass( await dialogContent, 'error-content') === true) {
                await console.log(' chart error' );
        } else {
        await expect(dialog.isDisplayed()).toBe(true);
        await expect(chart.isDisplayed()).toBe(true);

        }

1 Ответ

0 голосов
/ 15 октября 2018

У вас нет точки в вашем селекторе.Должно быть: let dialogContent = element(by.css('.dialog-content'));

Отредактировано: Проблема в том, что вы пытаетесь проверить, имеет ли dialogContent elemnent класс 'error-content'.Это не так.dialogContent у ребенка есть класс.Вам нужно получить дочерний элемент этого селектора.

Отредактировано 2: Я бы упростил код wholde:

const dialog = element(by.css('.dialog-component'));
const errorContent = element(by.css('.dialog-content > .error-content'));
await click.onto(option);
await expect(dialogContent.isDisplayed()).toBe(true);

if (await errorContent.isPresent()) {
    await console.log(' chart error' );
} else {
    await expect(dialog.isDisplayed()).toBe(true);
    await expect(chart.isDisplayed()).toBe(true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...