#cypress #hammer
#cypress #молоток
Вопрос:
У меня есть прослушиватель Hammer в div, который прослушивает нажатие. Я пишу тесты с помощью Cypress, и у меня возникли проблемы с имитацией нажатия. Я возлюсь с trigger()
. Я пробовал trigger('tap')
, trigger('mousedown').trigger(mouseup')
и trigger('touchstart').trigger('touchend')
, но безуспешно. Кто-нибудь успешно производит нажатия молотка с помощью Cypress?
Нажатие вызывает функцию, которая устанавливает window.location = new-page.html
, вот так…
function changePage(id) {
window.location.href = "FraisEnListe.aspx?idnote=" id;
}
К сожалению, если я вызываю функцию непосредственно из Cypress, вот так…
cy.window().then((win) => {
win.changePage(29312);
})
в качестве базового URL берется URL-адрес Cypress stem, а не текущее местоположение в тестируемом приложении, и я получаю дымящийся 404. Это кажется очень сложным.
Комментарии:
1. Может ли это быть связано с проблемой, из-за которой я их открыл? github.com/cypress-io/cypress/issues/2521
2.Кроме того, см. Erik Zeedijk , мы все еще пытаемся получить Hammer.js для запуска при щелчке () или любом другом событии, отправленном из Cypress, если на то пошло. Насколько я понимаю, Cypress не может отправлять собственные события. Похоже, что Hammer не распознает события jQuery, поэтому мы застряли. Также попытка действий custom .invoke не работает. Комбинация Hammer и Cypress, похоже, является проблемой. Поскольку события Hammer используются в приложении повсюду, нам, возможно, потребуется обратиться к Selenium для нашего тестирования.
Ответ №1:
Попробуйте добавить свойство типа: ‘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);