2017-05-11 70 views
0

我在javascript中使用Nightmare創建一個web刮板,但評估函數沒有返回正確的信息。它似乎能夠返回原始類型(整數,字符串等),但不包含「querySelectorAll」中的元素列表。下面的代碼工作得很好:噩夢沒有從評估返回正確的值

var Nightmare = require('nightmare'); // make a new nightmare 
var nightmare = Nightmare({ show: true }); // display it (change to false for text only) 





nightmare 
.goto('http://stackoverflow.com/questions') // go to stack overflow 

.evaluate(function() { 
    var all_options = document.querySelectorAll(".summarycount"); 
    return all_options[0].innerHTML; 

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

,並打印出「13844183」或任何當前的問題問數量爲。然而,當我試圖返回所有從評價功能的選項,改變像這樣的評估,然後功能:

.evaluate(function() { 
    var all_options = document.querySelectorAll(".summarycount"); 
    return all_options; 

}) 
// .end() 
.then(function (result) { 
    console.log(result[0].innerHTML); 
}) 

它只是打印不確定的。所以evaluate函數返回的值不是所有匹配DOM元素的正確列表。有沒有辦法解決?理想情況下,腳本能夠從列表中找到多個元素,選擇每個元素,然後在頁面上運行更多代碼(可能涉及選擇更多選項),然後評估結果。

回答

0

問題是評估必須返回一個原始類型。我通過處理評估函數中的所有點擊和處理數據來解決了部分問題。