【问题标题】:How can I get Cypress to simulate a Hammer tap?如何让 Cypress 模拟 Hammer 水龙头?
【发布时间】:2019-03-11 14:48:42
【问题描述】:

我在 div 上有 Hammer 监听器,监听点击和按下。我正在用 Cypress 编写测试,但在模拟水龙头时遇到了很多麻烦。我在摆弄trigger()。我试过trigger('tap')trigger('mousedown').trigger(mouseup')trigger('touchstart').trigger('touchend'),但没有成功。有人用 Cypress 成功生产 Hammer 水龙头吗?

点击调用一个函数,设置window.location = new-page.html,像这样...

function changePage(id) {
    window.location.href = "FraisEnListe.aspx?idnote=" + id;
}

不幸的是,如果我直接从 Cypress 调用该函数,像这样......

cy.window().then((win) => {
  win.changePage(29312);
})

Cypress url stem 被视为基本 url,而不是正在测试的应用程序中的当前位置,我得到了一个蒸汽 404。这似乎很棘手。

【问题讨论】:

  • 可能与我打开它们的问题有关吗? github.com/cypress-io/cypress/issues/2521
  • 另外,请参阅Erik Zeedijk 我们仍在尝试让 Hammer.js 触发 click() 或 Cypress 发送的任何其他事件。据我了解,赛普拉斯无法发送本地事件。 Hammer 似乎无法识别 JQuery 事件,所以我们陷入了困境。尝试自定义 .invoke 操作也不起作用。 Hammer 和 Cypress 的组合似乎是一个问题。由于 Hammer 事件在应用程序中无处不在,我们可能需要回顾 Selenium 进行测试。

标签: cypress hammer


【解决方案1】:

尝试添加属性 type: 'touch' ,以触发事件

 const pointerEvent = {
    force: true,
    pointerType: 'touch',
    x: 11.1386137008667,
    y: 653.46533203125,

}

 cy.get('[data-cy=body]')
            .trigger('pointerdown', pointerEvent)
            .trigger('pointerup', pointerEvent)

在我的情况下,我必须按下或点击角落:

const pointerEvent = {
            force: true,
            pointerType: 'touch',
        };
        cy.wait(3000);
        cy.get('[data-cy=body]')
            .trigger('pointerdown', 'topLeft', pointerEvent)
            .trigger('pointerup', 'topLeft', pointerEvent)
            .wait(5000);

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 2010-11-05
    • 2019-06-30
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多