Я пишу сценарий, который предназначен для загрузки некоторых вещей из файлов .txt, а затем выполнения нескольких (в цикле) запросов на веб-сайт с кошмарным эмулятором браузера node.js.
У меня естьнет проблем с чтением из текстовых файлов и т. д. нет, но удается заставить его работать синхронно и без исключений.
function visitPage(url, code) {
new Promise((resolve, reject) => {
Nightmare
.goto(url)
.click('.vote')
.insert('input[name=username]', 'testadmin')
.insert('.test-code-verify', code)
.click('.button.vote.submit')
.wait('.tag.vote.disabled,.validation-error')
.evaluate(() => document.querySelector('.validation -error').innerHTML)
.end()
.then(text => {
return text;
})
});
}
async function myBackEndLogic() {
try {
var br = 0, user, proxy, current, agent;
while(br < loops){
current = Math.floor(Math.random() * (maxLoops-br-1));
/*...getting user and so on..*/
const response = await visitPage('https://example.com/admin/login',"code")
br++;
}
} catch (error) {
console.error('ERROR:');
console.error(error);
}
}
myBackEndLogic();
Возникает ошибка: UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'webContents' из undefined
Итак, вопросов несколько:
1) Как исправить исключение
2) Как заставить его работать на самом деле, синхронизировать и эмулировать каждый раз адрес (как вВ предыдущей попытке, которую я не сохранил, я исправил исключение, но браузер фактически не открывался, и он был в основном пропущен
3) (Не так важно) Можно ли выбрать несколько объектов с помощью
.wait('.class1,.class2,.validation-error')
и сохранить каждое значение в разных переменных или просто получить текст из первого произошедшего?(если ничего из этого не произошло, например, вернуть 0)