Я пытаюсь очистить веб-страницу, созданную с помощью Dojo Webkit, с помощью NightmareJS. Проблема, с которой я сталкиваюсь, заключается в том, что при попытке нажимать кнопки для перехода по страницам мне нужно убедиться, что сами кнопки загружены, прежде чем пытаться нажимать их, иначе я получаю такие ошибки, как: «Невозможно найти элемент по селектору: selector", чего и следовало ожидать.
Добавление ожидания (миллисекунды) работает, но в ситуации, когда сервер работает медленно или нужно показать большое количество вещей, загрузка может превысить время ожидания, чего я, очевидно, хочу избежать. Затем я попытался использовать метод ожидания (селектор), и в этот момент он просто останавливается. Браузер Electron при всём этом открыт, и страница загрузилась полностью успешно, включая кнопку с селектором, я могу нажать на неё и всё сделать вручную.
Вот пример того, что я пытаюсь сделать:
nightmare
.click('#button')
.wait('#otherbutton')
.click('#otherbutton')
.catch((error) => console.log('Error:...', error));
Нажимается первая кнопка, и страница загружается, но затем она зависает, а функция второго щелчка никогда не выполняется.
Изменить: после изучения Dojo Webkit я обнаружил, что в нем есть специальный загрузчик, который, как мне кажется, мешает загрузке веб-страницы, потому что я не уверен, как ожидание (селектор) проверяет страницу, чтобы определить, загрузился ли элемент на страницу, я не могу быть уверен, что загрузчик dojo является основной причиной, и даже тогда я все равно был бы признателен за какое-то обходное решение, если это так.
.wait(selector)
по умолчанию опрашивает каждые 250 мс (обслуживание памяти), запрашивая, существует ли элемент. Ничего фантастического. Я сомневаюсь, что загрузчик Dojo вызовет проблемы — опрос ожидания запускается в контексте браузера, но он не должен зависеть от страницы. - person Ross   schedule 29.08.2016