Вы также можете написать это как пользовательскую команду , которая, как мне кажется, немного проще для чтения, и возможность контролировать то, что записывается в журнал команд, является бонусом.
Вот пользовательская команда, которую я использую в ряде наших тестов для получения текста из элемента. Текст получается иначе, чем вы делаете - я обнаружил, что использование invoke()
довольно привередливо, возможно, именно так разработано наше приложение. Если вы хотите получить текст, используя invoke()
, вы можете сделать это и внутри пользовательской команды.
Cypress.Commands.add("text", { prevSubject: "element" }, subject => {
return cy.wrap(subject, { log: false }).then($el => {
var text = $el.get(0).text();
Cypress.log({
name: "text",
message: "",
consoleProps() {
return {
yielded: text,
};
},
});
return text;
});
});
it('finds the role', function () {
cy.visit(...);
return cy.get('.myClass').text().then(elementText => {
cy.log('campaign', elementText);
expect(elementText).to.equal(...);
});
})