如何正确使用Cypress中的if语句

如何正确使用Cypress中的if语句,cypress,Cypress,在运行了一些测试并发现了更多层来解决此问题后,我正在重新格式化此问题 当前问题 因此,我发现我可以在下划线中添加一个数据cy,表示选择了一个状态。然后,我在州名称中添加了一个数据cy 这样我就可以试着运行这样的测试: it('Clicks to delete selected states', () => { if(cy.get('[data-cy=state_underline]').should('be.selected')){ cy.g

在运行了一些测试并发现了更多层来解决此问题后,我正在重新格式化此问题

当前问题 因此,我发现我可以在下划线中添加一个
数据cy
,表示选择了一个状态。然后,我在州名称中添加了一个
数据cy

这样我就可以试着运行这样的测试:

    it('Clicks to delete selected states', () => {
        if(cy.get('[data-cy=state_underline]').should('be.selected')){
            cy.get('[data-cy=state_name]')
            .click({ multiple: true })  
        }
    });
错误 当运行
.should('be.selected')
时,它会选择前几个状态,然后抛出此错误:

CypressError:超时重试:coordsHistory必须至少有2组coords

当我将
.should('be.selected')
切换到
.should('be.visible')
它抛出以下错误:

此元素“[,58更多…]”不可见,因为它的有效宽度和高度为:“0 x 2”像素。


原始问题 我正在尝试编写一个测试来取消选择已选择的状态。唯一正在改变的是
{
如果(cy.get(“”)=“”){
cy.单击()
cy.get(“[data cy=默认按钮]”)
.eq(3)
。单击();
}
});
**更新** 因此,在进一步挖掘之后,我发现在状态下有一个带下划线的跨距,表示它被选中。现在我想知道我是否可以说一些类似于
.should('be.visible')
的话,然后
cy.click()
it

下划线范围码

如果您想要接收元素状态的布尔检查,我建议使用jQuery,Cypress内置了jQuery。或者它可能具有允许获取元素当前状态的属性。 假设您有跨距,如果它有带下划线的子跨距,我们可以假设它已被选中。因此,对于jquery,它将是smth,如:
if(Cypress.$('span[class*=“StateText”]”)具有('span[class*=“Underline”]){
//处理所选元素的逻辑。
}


cy.get('span[class*=“StateText”]').filter(':has(span[class*=“Underline”])…//现在我们已经选择了所有span

使用jquery比在条件中处理cypress-chainer容易得多,因为断言返回的是cypress-chainer对象,而不是布尔值

    it('Clicks to selected states', () => {
            if (cy.get('<span class="css-mdt04d-StateText css-1x6iasc3">') === '<span class="css-ddft8r-StateText css-1x6iasc3">'){
                cy.click()
                cy.get('[data-cy=default-buttons]')
                    .eq(3)
                    .click();
            }
    });