Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以选择第一个元素,但不能选择javascript中的整个节点列表_Javascript - Fatal编程技术网

可以选择第一个元素,但不能选择javascript中的整个节点列表

可以选择第一个元素,但不能选择javascript中的整个节点列表,javascript,Javascript,我试图在一个页面上记录与某个类匹配的元素的每个内部文本。使用噩梦.js/Electron,仅选择第一个元素的工作代码为: .evaluate(function() { console.log(document.querySelector('.result__url__domain').innerText) }) // returns the first matching element's inner text 尽管这是可行的,但试图抓住它们并不能: .evaluate(function(

我试图在一个页面上记录与某个类匹配的元素的每个内部文本。使用噩梦.js/Electron,仅选择第一个元素的工作代码为:

.evaluate(function() {
  console.log(document.querySelector('.result__url__domain').innerText)
}) // returns the first matching element's inner text
尽管这是可行的,但试图抓住它们并不能:

.evaluate(function() {
  console.log(document.querySelectorAll('.result__url__domain').innerText)
}) // this returns undefined
这是针对所有相关要素的错误方法吗

为清晰起见,以下是完整的脚本代码:

var Nightmare_module = require('nightmare')
var nightmare_instance = Nightmare_module({
  show: true // SHOWS the browser
})

var search_term = 'plumber las vegas'

// do a search for the target term

nightmare_instance
  .viewport(1200, 900)
  .goto('https://duckduckgo.com')
  .type('#search_form_input_homepage', search_term)
  .click('#search_button_homepage')
  .wait('.result__a')


  // print domain names to the console

  .evaluate(function() {
    console.log(document.querySelectorAll('.result__url__domain').innerText)
  })

  .then(function (resultObject) {
    console.log(resultObject)
  })
  // .catch(function(errorObject) {
  //   console.error('Search failed. Reason: ', errorObject)
  // })
返回一个dom元素数组,因此必须对每个元素进行迭代才能获得innerTEXT

.evaluate(function () {
    document.querySelectorAll('.result__url__domain').forEach(function(singleElement){
        console.log(singleElement.innerText);
    });
})
querySelectorAll返回没有innerText(或textContent)属性的节点列表。您需要在节点上循环以获取其文本内容。或者可能
[].map.call(NodeList,node=>node.textContent).join(“”)