Javascript 子菜单按钮单击仅在Test Runner中可靠工作

Javascript 子菜单按钮单击仅在Test Runner中可靠工作,javascript,cypress,ui-automation,Javascript,Cypress,Ui Automation,我一直在从CLI(无头或无头)运行失败(测试通过,单击步骤导致的提交不会更准确)的按钮单击,该按钮单击可从Cypress UI/测试运行程序(./node_modules/.bin/Cypress open)运行。元素是单击初始保存按钮后可用的按钮。当我从CLI运行时,我看到按钮高亮显示,但不会出现提交页面的单击。在Cypress UI中,相同的代码会导致成功的单击和页面提交。代码是: saveOrder() { cy.get('button[data-test="saveOr

我一直在从CLI(无头或无头)运行失败(测试通过,单击步骤导致的提交不会更准确)的按钮单击,该按钮单击可从Cypress UI/测试运行程序(./node_modules/.bin/Cypress open)运行。元素是单击初始保存按钮后可用的按钮。当我从CLI运行时,我看到按钮高亮显示,但不会出现提交页面的单击。在Cypress UI中,相同的代码会导致成功的单击和页面提交。代码是:

saveOrder() {
    cy.get('button[data-test="saveOrderButton"]').eq(0).click();
    cy.wait(5000);
    cy.get('button').contains('Save and View').click({ force: true, delay: 10000, timeout: 330000 });
}
我尝试在第二次单击后添加额外的等待。我已经尝试了.dblclick()。我还尝试了其他地方建议的jQuery单击:

    cy.get('button').contains('Save and View').then(option => {
    cy.wrap(option).contains('Save and View');
    option[0].click();
})
最后,我们还尝试添加.trigger('mouseover')或.trigger('mousemove')。当从CLI运行时,这些努力都不允许测试工作(单击按钮)。如有任何建议,将不胜感激

(按钮高亮显示,但未单击以提交)

编辑-我偶尔使用以下代码获得CLI成功,但仍然非常不可靠。每次测试运行结果都会继续通过。我认为问题似乎是在讨论的竞争条件&也许我错误地实现了第三方插件,但我仍然有一个非常脆弱的测试,包括以下内容:

   saveOrder() {
        cy.get('button[data-test="saveOrderButton"]').eq(0).click({ force: true, delay: 600, timeout: 330000 });
        cy.wait(5000);

        let count = 0
        const clickSaveView = $el => {
            count += 1
            return $el.click()
        }

        cy.contains('button', 'Save and View').eq(0)
            .should('be.visible')
            .wait(35000)
            .pipe(clickSaveView)
            .wait(5000)
            .should($el => {
                expect($el).to.not.be.visible
            })
            .then(() => {
                cy.log(`clicked ${count} times`)
            })
    }

当它通过时,我看到它点击了5次、9次或多少次的日志写入。当它大部分失败时,我看到元素仍然可见&单击提交没有发生(错误为“AssertionError:预期“”不可见”)。当从CLI启动Cypress时,应用程序的速度非常慢,而测试运行程序可以如此轻松地等待连接的侦听器,这有道理吗?单击尝试是否有一些未公布的限制(或者我可能没有正确实现.pipe(单击))?我已经尝试过在每一步中加入等待(我认为cypress pipe会消除这种需要),但仍然没有找到一个好的解决方案。

你能告诉我无头跑步会给你带来什么样的错误吗?另外,我建议您尝试npx cypress run——浏览器chrome——无头测试通过后,按钮没有被点击。我将npx添加到CLI调用中,但得到了相同的结果。npx./node\u modules/.bin/cypress run——浏览器chrome——spec“cypress/integration/my\u tests/new\u order\u entry\u tests.js”我建议尝试.should('be.visible')。单击()而不是在单击之前等待,因为它看起来似乎取决于第一次单击后穹顶的渲染,Api响应不能100%超时。我遇到过这样的情况:第一次单击触发了圆顶状态的更改和刷新,第二次单击发生在圆顶重新加载之前。如果是这种情况,我会在第一个按钮上单击().should('not.be.visible'),在第二个按钮上单击().should('be.visible')。单击()谢谢您的建议。我添加了一个链接到该情况的图像。单击成功的命令,但不会提交页面。我添加了您建议的.should('be.visible').click(),但看到了相同的结果。(第一个按钮将保持可见,如图所示,因此未添加的按钮不应显示该按钮)。对我来说,令人困惑的是,它在从Cypress UI启动时成功,而不是通过任何CLI尝试。我也更新到了最新的Chrome浏览器。这个元素可能不是一个按钮。尝试使用cy.contains('Save and View')。应该('be.visible')。单击(),或者如果是按钮cy.contains('button','Save and View')。应该('be.visible')。单击()