使用each()中的invoke()存取href屬性 Cypress
P粉231112437
P粉231112437 2023-12-12 09:41:00
0
2
499

我是 Cypress 的新手,我嘗試使用 invoke() 從群組中存取每個 div 標籤的 href 屬性,但它給出了錯誤。有人可以建議你如何做嗎?

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粉231112437
P粉231112437

全部回覆(2)
P粉276577460

$el 是一個 JQuery 元素,而不是它本身在 Cypress 鏈中。您需要使用 cy.wrap() 在 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)
                })
        })
P粉359850827

我認為.get() 不合適- 它只適用於<body>,不適用於每個'.bms-scoreboard__game-tile-- mls'

嘗試使用 .find() 來取代

使用 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)
  })
})

或與賽普拉斯運營商合作

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)
      })
  })
})

或將「尋找」移至第一個選擇器

cy.get('.bms-scoreboard__game-tile--mls a')
  .each($a => {
    const href = $a.attr('href')
    cy.request(href)
      .its('status')
      .should('eq', 200)
  })
})
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板