首页 > 解决方案 > 在 each() 中使用 invoke() 访问元素的文本。柏

问题描述

想要访问元素组中的文本。这种方法不起作用,跑步者给出一个错误,说调用不是一个函数

cy.get('div[class^="lalala"]')
          .each(function($sec, i, $sects)  {
            $sec.find('header[class^="tatata"]')
            .invoke('text').then((text) => {
             let secText = text
             cy.log(secText);
         });
        })

但是如果没有each(),当我访问任何元素时它就可以工作:

cy.get('div[class^="lalala"]').first()
          .find('header[class^="tatata"]')
          .invoke('text')
          .then((text) => {
             let secText = text
             cy.log(secText);
         });
        })

我该如何处理?

标签: cypresseach

解决方案


$sec是一个包装的 jQuery 元素,也$sec.find()返回一个 jQuery 元素。你必须使用它cy.wrap来调用invoke它。

cy.get('div[class^="lalala"]').each(function ($sec, i, $sects) {
  cy.wrap($sec.find('header[class^="tatata"]'))
    .invoke('text')
    .then((secText) => {
      cy.log(secText)
    })
})

推荐阅读