2016-11-11 6 views
0

Я только начал использовать кошмар. Я использовал его на своей веб-странице для целей тестирования.Выполните операцию щелчка подряд по динамическому списку выбранных элементов в кошмаре js

У меня есть пользовательский интерфейс.

меню

tab1 | tab2 | tab3 ...... (динамически генерируемые вкладки)

контейнер DIV для выбранной вкладки

 selected tab data 

Я получил элемент DOM, который содержит меню.

Я не знаю, как выполнить щелчок по каждой вкладке и получить выбранные данные вкладки.

После прочтения документов я не мог понять это, и для этого нет никакого примера.

я был в состоянии сделать только это -

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ show: true }); 

nightmare 
    .goto('http://www.example.com') 
    .wait('#menu') 
    .evaluate(function() { 
     var menuDiv = document.querySelector('div#menu.content-disp'); 
     var menuAnchors = menuDiv.querySelectorAll('a[href]'); 

     var res = ""; 
     for(var i =0;i<menuAnchors.length;i++){ 
      res+=menuAnchors[i].innerText; 
     } 

     return res; 
    }) 
    .end() 
    .then(function (result) { 
     console.log(result) 
    }) 
    .catch(function (error) { 
    console.error('Search failed:', error); 
    }); 

Я использую кошмар версия

"dependencies": { 
    "nightmare": "^2.8.1" 
    } 

ответ

1

После того, как вы создали список якорей, вам необходимо перебрать их, что с обещаниями - нетривиальная задача. Рассмотрим следующий, который перебирает свои результаты и получает название для каждой страницы:

nightmare.then((result) => 
    result.reduce(function(accumulator, url) { 
    return accumulator.then(function(results) { 
     return nightmare.goto(url) 
     .wait('body') 
     .title() 
     .then(function(result){ 
      results.push(result); 
      return results; 
     }); 
    }); 
    }, Promise.resolve([])).then(function(results){ 
    console.dir(results); 
}); 

Вы можете дать "Asynchronous Operations and Loops" at nightmare-examples чтения. Это должно помочь вам начать работу.

+0

Это фантастика. Ваш ответ помог мне http://stackoverflow.com/questions/38772060/moving-between-pages-and-scraping-as-i-go-with-nightmare/38808596#38808596. И это должно быть в официальных прочитанных документах о джитсу кошмара - «Асинхронные операции и петли» на примерах кошмаров. – WitVault

+1

@WitVault Я думаю, что я добавлю ветку github pages в Nightmare и слияние большинства, если не всех «кошмарных примеров», в какой-то момент в ближайшем будущем. – Ross

+0

Было бы очень полезно. Вы вносите свой вклад в кошмар js? – WitVault