Как использовать атрибут спокойствия js, чтобы утверждать, если элемент отключен
У меня есть следующий DOM на странице
<button type="submit" ng-reflect-disabled="true" disabled="">
Save & 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),
)
Надеюсь это поможет!
январь