【问题标题】:Select one of two different classes within Element with Cypress在 Element with Cypress 中选择两个不同的类之一
【发布时间】:2021-12-02 16:11:04
【问题描述】:

在我们的应用程序中,我们使用任务让用户完成特定的工作流程。此任务可以有两个不同的类,具体取决于用户面前的任务。

“task__options”和“ap-option”类在“task__inner”类中。

我必须遵循代码,但它永远不会通过 IF 只有 ELSE。你有什么解决这个问题的建议吗?

Then('I click the task option {string}', (task: string) => {

    cy.get('.task__inner').within(($ele) => {
        if($ele.hasClass('task__options')){
            cy.get('.task__options').click();
        } else {
            cy.get('.ap-option').click();
        }
    });
});

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    您可以编写由, 分隔的两个类,因此如果其中任何一个存在,那么它将执行click()

    cy.get('.task__options,.ap-option').click()
    

    那么您的代码将如下所示:

    cy.get('.task__inner').within(() => {
      cy.get('.task__options,.ap-option').click()
    })
    

    【讨论】:

    • 完美!!就是这个。现在我必须看看如何用一个类而不是另一个类进行拦截调用,但这是一个非常直接的 if-else。谢谢。
    【解决方案2】:

    感谢@Alapan,我为这个问题找到了解决方案,但我还包含了一个 API 调用,如果两个类之一存在,它就会关闭。

    Then('I click the task option {string}', (task: string) => {
        let clickButton = task => {
            cy.get('.task__options,.ap-option').contains(task, {matchCase: false, timeout: 30000})
                .scrollIntoView()
                .click();
        };
        cy.get('.task__inner').within(() => {
            cy.get('.task__form').then(($ele) =>{
                if($ele.hasClass('task__options')){
                    cy.intercept("POST", "/bla-bla/api/Task/ResolveConditionalWait/**").as('ResolveConditional')
                    clickButton(task);
                    cy.wait('@ResolveConditional')
                } else {
                    clickButton(task);
                }
            })
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多