Я пишу несколько тестов, используя тестовую среду Mocha и Chai библиотека утверждений Я тестировал их в браузере Chrome, и они работают нормально, но затем я попробовал их в безголовом браузере mocha-phantomjs и события .click(), которые я отправляю для определенных элементов, просто не срабатывают, в то время как другие работают.
Тест успешно входит на веб-сайт, что выполняется с помощью:
$("#login").click()
«#login» — это кнопка отправки формы, и она отлично работает, если щелкнуть таким образом.
Затем я хочу щелкнуть элемент меню, который является элементом привязки.
$("#menuItemToClick").click();
Именно здесь он перестает работать в mocha-phantomjs, хотя он отлично работает в Chrome.
Таким образом, очевидно, что функция .click() определена и работает, но не для этого элемента.
Я исчерпал свой google-foo. Вот некоторые другие вещи, которые я видел, как другие упоминали и пробовали:
Использовать javascript-рассылкуEvent
var evObj = new CustomEvent('click');
evObj.initEvent('click', true, false);
document.getElementById('menuItemToClick').dispatchEvent(evObj);
Это запускает событие щелчка и переводит браузер на правильный URL-адрес, но также вызывает перезагрузку всей страницы как в chrome, так и в mocha-phantomjs, что перезапускает тесты с самого начала, помещая их в бесконечный цикл... Есть ли способ использовать это, не вызывая перезагрузки страницы?
Используйте фантомные страницы page.sendEvent()
var elementPosition = $("#menuItemToClick").offset();
page.sendEvent('click', elementPosition.left + 1, elementPosition.top + 1);
Предполагается, что это отправит собственное событие щелчка, если вы передадите ему правильные координаты элемента. Я пытался заставить это работать, но я не мог получить доступ к странице из запущенных тестов мокко. Есть ли способ получить доступ к переменной страницы phantomjs из тестов mocha-phantomjs?
Любая помощь приветствуется!