赛普拉斯点击不会触发操作

Posted

技术标签:

【中文标题】赛普拉斯点击不会触发操作【英文标题】:Cypress click doesn't trigger the action 【发布时间】:2022-01-19 23:07:51 【问题描述】:

我有一个包含产品数量控制元素和价格的产品页面。在网站上,当我点击增加数量按钮+时,价格会相应变化。

但是当我使用 Cypress 时,我可以单击增加按钮,产品数量发生变化但价格保持不变。就像事件从未被触发一样。

是否有类似toHaveBeenCalledWith 或任何我应该添加到流程中的听众?

我的一段代码:

describe("checkout", describeCheckout);

function describeCheckout() 
  beforeEach(() => 
    populateCart();
    cy.loginUi();

    cy.visitPath("/checkout");
    cy.wait(3000);
  );

  // This part works
  it("should click increase button on item", increaseItemQty);


function increaseItemQty() 
  cy.get("increase-qty").click()

【问题讨论】:

请添加+按钮的html 嗨。拥有 HTML 和运行日志以便更好地理解会很棒。尝试通过事件名称触发事件:cy.get("increase-qty").trigger('click') 1.包括更新价格的函数的代码。 2.在里面放一个log,看看有没有被调用,有没有报错。 3. 检查左侧的 cypress 窗口是否会导致更新价格的 API 调用实际触发。 4.题名有误。它确实触发了动作(增加数量)。在它调用的函数中存在问题。 【参考方案1】:

试试下面的代码:

describe("checkout", describeCheckout);

function describeCheckout() 
  beforeEach(() => 
    populateCart();
    cy.loginUi();

    cy.visitPath("/checkout");
    cy.wait(3000);
  );

  // This part works
  it("should click increase button on item", increaseItemQty);


function increaseItemQty() 
  cy.get("increase-qty").scrollIntoView().click( force:true )

【讨论】:

点击正常,显示的数量上升到2就可以看出 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于赛普拉斯点击不会触发操作的主要内容,如果未能解决你的问题,请参考以下文章

赛普拉斯 - 检查按钮是不是存在,如果存在则单击它

赛普拉斯 Github 操作失败

赛普拉斯在多项测试中冻结

赛普拉斯:检查元素是不是存在无异常

如何使赛普拉斯等待具有多个结果的异步搜索完成而不会导致测试失败

赛普拉斯测试 Material-UI 日期选择器不适用于 Github 操作