См. Cypress do c о , вызовите команду и псевдонимы .
Если название инвентарного предмета находится на кнопке, вы можете использовать:
it("select 2 products", () => {
cy.get(':nth-child(1) > .pricebar > .btn_primary').click()
.invoke('val').as('inventoryItemName0');
cy.get(':nth-child(1) > .pricebar > .btn_secondary')
.should("contain","REMOVE")
cy.get(':nth-child(4) > .pricebar > .btn_primary').click()
.invoke('val').as('inventoryItemName1');
cy.get(':nth-child(4) > .pricebar > .btn_secondary')
.should("contain","REMOVE")
cy.get('.fa-layers-counter')
.should("contain","2")
});
it("check cart", () => {
cy.get('path').click();
cy.get('.subheader').should("contain","Your Cart");
cy.get('.inventory_item_name').should("have.length", 2).each((element, index) => {
cy.get("@inventoryItemName" + index).then(name => {
cy.wrap(element).should("include.text", name);
});
});
cy.get('.inventory_item_price').should("have.length",2)
.should('contain',"49.99")
});
Аргумент, переданный команде Invoke, зависит от того, задано ли имя элемента инвентаря как значение для кнопки или как текст:
Если элемент html похож на <button value="name"/>
, используйте .invoke('val')
.
Иначе, если хотите <button>name</button>
, используйте invoke('text')
.