Maison  >  Questions et réponses  >  le corps du texte

Accédez à l'attribut href en utilisant Invoke() dans each() Cypress

Je suis nouveau sur Cypress et j'essaie d'utiliser Ensure() pour accéder à l'attribut href de chaque balise div du groupe mais cela génère une erreur. Quelqu'un peut-il vous suggérer comment procéder ?

cy.get('.bms-scoreboard__game-tile--mls').each(($el,index,$list) => {
            $el.get('a')
                .invoke('attr','href')
                .then(href => {
                    cy.request(href)
                        .its('status')
                        .should('eq',200)
                })
        })

P粉231112437P粉231112437312 Il y a quelques jours454

répondre à tous(2)je répondrai

  • P粉276577460

    P粉2765774602023-12-13 00:52:13

    $el 是一个 JQuery 元素,而不是它本身在 Cypress 链中。您需要使用 cy.wrap() Utilisez-le dans la chaîne Cypress.

    cy.get('.bms-scoreboard__game-tile--mls').each(($el,index,$list) => {
                cy.wrap($el)
                    .get('a')
                    .invoke('attr','href')
                    .then(href => {
                        cy.request(href)
                            .its('status')
                            .should('eq',200)
                    })
            })
    

    répondre
    0
  • P粉359850827

    P粉3598508272023-12-13 00:36:38

    Je pense .get() 不合适 - 它仅适用于 <body>,不适用于每个 '.bms-scoreboard__game-tile--mls'.

    Essayez d'utiliser .find() au lieu de

    Utilisez les opérateurs jQuery

    cy.get('.bms-scoreboard__game-tile--mls')
      .each(($el,index,$list) => {
        const href = $el.find('a').attr('href')
        cy.request(href)
          .its('status')
          .should('eq', 200)
      })
    })
    

    Ou travaillez avec les opérateurs Cypress

    cy.get('.bms-scoreboard__game-tile--mls')
      .each(($el,index,$list) => {
        cy.wrap($el).find('a')
          .invoke('attr','href')
          .then(href => {
            cy.request(href)
               .its('status')
               .should('eq',200)
          })
      })
    })
    

    Ou déplacez "Rechercher" vers le premier sélecteur

    cy.get('.bms-scoreboard__game-tile--mls a')
      .each($a => {
        const href = $a.attr('href')
        cy.request(href)
          .its('status')
          .should('eq', 200)
      })
    })
    

    répondre
    0
  • Annulerrépondre