Ожидание NightmareJS (селектор) не работает с веб-страницей на основе додзё

Я пытаюсь очистить веб-страницу, созданную с помощью Dojo Webkit, с помощью NightmareJS. Проблема, с которой я сталкиваюсь, заключается в том, что при попытке нажимать кнопки для перехода по страницам мне нужно убедиться, что сами кнопки загружены, прежде чем пытаться нажимать их, иначе я получаю такие ошибки, как: «Невозможно найти элемент по селектору: selector", чего и следовало ожидать.

Добавление ожидания (миллисекунды) работает, но в ситуации, когда сервер работает медленно или нужно показать большое количество вещей, загрузка может превысить время ожидания, чего я, очевидно, хочу избежать. Затем я попытался использовать метод ожидания (селектор), и в этот момент он просто останавливается. Браузер Electron при всём этом открыт, и страница загрузилась полностью успешно, включая кнопку с селектором, я могу нажать на неё и всё сделать вручную.

Вот пример того, что я пытаюсь сделать:

nightmare
  .click('#button')
  .wait('#otherbutton')
  .click('#otherbutton')
  .catch((error) => console.log('Error:...', error));

Нажимается первая кнопка, и страница загружается, но затем она зависает, а функция второго щелчка никогда не выполняется.

Изменить: после изучения Dojo Webkit я обнаружил, что в нем есть специальный загрузчик, который, как мне кажется, мешает загрузке веб-страницы, потому что я не уверен, как ожидание (селектор) проверяет страницу, чтобы определить, загрузился ли элемент на страницу, я не могу быть уверен, что загрузчик dojo является основной причиной, и даже тогда я все равно был бы признателен за какое-то обходное решение, если это так.


person Gnomejon    schedule 17.08.2016    source источник
comment
Отвечая на ваш вопрос о редактировании: .wait(selector) по умолчанию опрашивает каждые 250 мс (обслуживание памяти), запрашивая, существует ли элемент. Ничего фантастического. Я сомневаюсь, что загрузчик Dojo вызовет проблемы — опрос ожидания запускается в контексте браузера, но он не должен зависеть от страницы.   -  person Ross    schedule 29.08.2016


Ответы (1)


Я тоже столкнулся с этим сегодня.

Я запускал кошмар с огурцом js, и время ожидания теста истекло до того, как ответила функция ожидания.

Я проверил исходный код и увидел, что функция ожидания допускает параметр тайм-аута в качестве второго параметра.

Я решил проблему, добавив тайм-аут .wait('selector', 2000)

Я думаю, что это ошибка последней версии кошмара.

Надеюсь это поможет.

person Scott Terry    schedule 28.11.2016