Есть веб-сайт, содержащий страницу со списком из 25 записей, где каждая запись является ссылкой на страницу, содержащую некоторую информацию, которая мне нужна. Я хочу перейти на страницу со списком, а затем: 1) щелкнуть ссылку на первую запись 2) получить весь HTML-код 3) вернуться на страницу со списком (для этого есть кнопка) 4) повторить для каждого другого списка
Я также хотел бы сделать это максимально эффективно, что, как мне сказали, означает использование обещаний. Вот мой набросок кода, который не работает:
var Nightmare = require('nightmare');
var nightmare = Nightmare({ openDevTools: true, show: true })
var Xray = require('x-ray');
var x = Xray();
var resultArr = [];
nightmare
.goto(hidTestURL)
.wait(2500)
.click('input[name="propertySearchOptions:advanced"]') //start navigating to listing page
.wait(2500)
.type('input[name="propertySearchOptions:streetName"]', 'Main')
.wait(2500)
.select('select[name="propertySearchOptions:recordsPerPage"]', '25')
.wait(2500)
.click('input[name="propertySearchOptions:search"]') //at listing page
.wait(2500)
.then(function(){
nightmare
.click('a[href^="Property.aspx?prop_id=228645"]') //first entry
.evaluate(function(){ //retrieve info
var resultArr = [];
resultArr.push(document.querySelector('html').innerHTML);
})
})
nightmare
.click('a[id="propertyHeading_searchResults"]') //return to listing page
.evaluate(function(){
return resultArr.push(document.querySelector('html').innerHTML); retrieve listing page info to show that it returned.
})
.then(function (resultArr) {
console.log('resultArr', resultArr);
x(resultArr[1], 'body@html') //output listing page html
.write('results.json');
})
Это доходит до страницы со списком, а затем не продолжается дальше. Я также попробовал тот же код, но с return nightmare
для каждого использования nightmare
, кроме первого. Я видел несколько примеров, в которых использовалось return
, но когда я это делал, код выдавал ошибку.
Я также попытался не включать третий nightmare
(тот, что после пробела) и вместо этого попытался продолжить старый экземпляр кошмара, перейдя прямо к .click()
, но это также вызвало ошибку.
Мне явно нужна помощь с синтаксисом и семантикой кошмара, но в Интернете не так много документации, кроме списка API. Кто-нибудь знает, как я могу сделать эту работу?