Как использовать атрибут спокойствия js, чтобы утверждать, если элемент отключен

У меня есть следующий DOM на странице

<button type="submit" ng-reflect-disabled="true" disabled="">
    Save &amp Exit
</button>

Также у меня есть (экранный) компонент для определения его атрибута

import {Attribute, Target} from "serenity-js/lib/serenity-protractor";
import {by} from "protractor";

export class myComponent {

    public static saveAndExit = Target.the('"Save & Exit" submit button')
        .located(by.buttonText("Save & Exit"));

    public static saveAndExitAttribute = Attribute.of(CreateClientComponent.saveAndExit);
}

Все, что я хочу сделать, - это убедиться, что DOM помечен атрибутом disabled, но моя следующая попытка в файле step_definitain ни к чему не привела

this.Then(
    /^he should see "Save & Exit" button still is disabled$/,
    function(buttonText) {

        return expect(
            this.stage.theActorInTheSpotlight().toSee(CreateClientComponent.saveAndExitAttribute),
        ).to.equal("");
    });

Basiccaly У меня нет достаточного понимания того, как нацелить любой атрибут, используя вопрос атрибута

Кроме того, мне не удалось найти какой-либо вариант использования этого, любой совет, намек был бы очень признателен

1 ответ

Решение

Вы на правильном пути! Вам просто нужно указать Serenity/JS, какой атрибут вас интересует.

Синтаксис Attribute вопрос Attribute.of(target).called('attribute name')согласно модульным тестам здесь.

Поэтому вместо того, чтобы сказать:

import {Attribute, Target} from "serenity-js/lib/serenity-protractor";
import {by} from "protractor";

export class myComponent {

    public static saveAndExit = Target.the('"Save & Exit" submit button')
        .located(by.buttonText("Save & Exit"));

    public static saveAndExitAttribute = Attribute.of(CreateClientComponent.saveAndExit);
}

попробуй это:

export class myComponent {

    public static saveAndExit = Target.the('"Save & Exit" submit button')
        .located(by.buttonText("Save & Exit"));
}

и тогда в вашем утверждении:

return expect(       
   actor.toSee(
      Attribute.of(CreateClientComponent.saveAndExit).called('disabled')
   )
).to.eventually.equal('');

Или даже лучше, используя задачу, чтобы увидеть:

return actor.attemptsTo(
  See.if(Attribute.of(CreateClientComponent.saveAndExit).called('disabled'), value => expect(value).to.eventually.equal('')
)

Который вы можете затем извлечь в другую задачу:

const CheckIfTheButtonIsDisabled = (button: Target) => Task.where(`#actor checks if the ${button} is disabled`,
      See.if(Attribute.of(button).called('disabled'), value => expect(value).to.eventually.equal('')
);

Что упростит ваше утверждение:

return actor.attemptsTo(
  CheckIfTheButtonIsDisabled(CreateClientComponent.saveAndExit),
)

Надеюсь это поможет!

январь

Другие вопросы по тегам