Javascript Cypress-从表td中筛选非零

Javascript Cypress-从表td中筛选非零,javascript,cypress,Javascript,Cypress,我对cypress很陌生,在进行集成测试时使用了它,遇到了一个问题,我想根据“td”过滤表的内容。我使用回调从行中获取“td”,并尝试使用承诺,然后选择它,但它似乎不起作用 cy.get($trs).find('td:nth-child(9)').then(($tds)=>{ cy.get($tds) .should('not.have.value',0) .first() }) t

我对cypress很陌生,在进行集成测试时使用了它,遇到了一个问题,我想根据“td”过滤表的内容。我使用回调从行中获取“td”,并尝试使用承诺,然后选择它,但它似乎不起作用

 cy.get($trs).find('td:nth-child(9)').then(($tds)=>{
            cy.get($tds)
              .should('not.have.value',0)
              .first()

          })
td没有附加任何类名或属性,否则可能会使用
not()
filter()

不管怎样,有人有什么建议吗?

如果你能分享html源代码以及你想在屏幕截图中检查什么值,那就太好了

我猜你想在截图中找到elment。您可以使用在屏幕截图中循环突出显示的元素

    cy.get('tr').find('td:nth-child(9)').each(($td)=>{
        cy.wrap($td).invoke('text').then(($text)=> {
            if ($text !== "0")  
                //do something here
                {console.log($text)}
        })
    })
嗯,多亏了-我找到了一个性能友好的解决方案

 cy.get($trs).find('td:nth-child(9)').each(($td) => {  
                    cy.get($td).not(':contains("0")')  // This is the key :)
                        .first().parent('tr')
                        // do your stuffs
                })

我现在不能再深入研究它了,但乍一看,有一件事突然出现在我的眼前-
应该
断言应该总是在DOM选择器之前。意味着您需要先更改
命令的顺序
应该
命令。。。do
cy.get($tds).first().should('not.have.value',0)
…并不是说它能解决您的整体问题,它只是吸引了我的眼球。那么,有什么方法可以跳过循环吗?表中的行可以更有效,因此我可以有更好的解决方案吗?在您的屏幕截图中,您有4个值需要检查。如何不使用循环检查多个值?性能方面,您可以指定我们要检查多少行吗?它是动态的,范围从5到1000。不过,我找到了一个更好的解决方案,将其发布在这里