仅当元素可用时才单击该元素,否则测试不会失败

问题描述 投票:0回答:1

我正在使用 Cypress 测试,目前面临一个问题,我想自动从选项中单击某个元素(仅当该元素可用时)。这是代码的一部分:

cy.get(Elements.jiraVulnerabilityTableTitle).should(
              CyCondition.EXIST
            );
            cy.contains(Mocks.identifierColumn);
            cy.get(Elements.securityContainerFilterButton).click();
            cy.get(Elements.securityContainerOption).should(CyCondition.EXIST).click({force:true});

这里,

securityContainerOption
是我正在使用的按钮。我有一个单独的
elements.js
文件,我已将
securityContainerOption
设置为
#react-select-2-option-0-0
。但是在运行测试时,我发现有时需要单击
#react-select-2-option-0-1
而不是
#react-select-2-option-0-0

所以,我想要的是,单击

securityContainerFilterButton
后,我想检查
#react-select-2-option-0-1
是否可用,如果是,请单击它。如果它不可用,则不应失败,而应单击
#react-select-2-option-0-0

我们如何添加元素的条件点击并且不让测试失败?

我尝试了以下更改:

cy.get('#react-select-2-option-0-1').then(($option) => {
    if ($option.length > 0) {
        cy.get('#react-select-2-option-0-1').click({force:true});
    } else {
        cy.get(Elements.securityContainerOption).should(CyCondition.EXIST).click({force:true});
    }
});

但是,在上面的代码中,我们做了

cy.get()
,因此如果找不到该元素,它本身就会失败。

javascript cypress
1个回答
0
投票

赛普拉斯不完全支持对一个元素或另一个元素进行开箱即用的测试。

但只要页面稳定,您就可以提供两个选择器,并用逗号分隔。

cy.get('#react-select-2-option-0-1, #react-select-2-option-0-0')

如果页面上有一个或另一个选择器,则此操作将通过。但如上所述,在运行命令之前页面必须稳定,因为在查询您的首选元素时不会重试

#react-select-2-option-0-1

理想情况下,您会想要选择不同的选择方式,也许是通过文本插入 id。

© www.soinside.com 2019 - 2024. All rights reserved.