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