Как проверить корзину, если она содержит элемент, который я выбрал в Cypress - PullRequest
0 голосов
/ 26 марта 2020

Я практикую UI Test в https://www.saucedemo.com/ с использованием Cypress, это демо-сайт электронной коммерции. я вхожу в систему с помощью standard_user и secret_sauce для пароля, как показано на первой странице

Я хочу знать, как собрать название продукта, если он был выбран, чтобы я мог проверить корзину, если она содержит правильные product

мой код сейчас

 it("select 2 products", () => {
    cy.get(':nth-child(1) > .pricebar > .btn_primary').click();
    cy.get(':nth-child(1) > .pricebar > .btn_secondary')
    .should("contain","REMOVE")
    cy.get(':nth-child(4) > .pricebar > .btn_primary').click();
    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) 
    .should("contain","Sauce Labs Fleece Jacket");
    cy.get('.inventory_item_price').should("have.length",2) 
    .should('contain',"49.99")
});

Но, как я уже упоминал выше, я хочу собрать имя, если инвентаризация содержит кнопку с текстом удалить, как мне это сделать?

1 Ответ

0 голосов
/ 26 марта 2020

См. 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').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...