可以选择第一个元素,但不能选择javascript中的整个节点列表
我试图在一个页面上记录与某个类匹配的元素的每个内部文本。使用噩梦.js/Electron,仅选择第一个元素的工作代码为:可以选择第一个元素,但不能选择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(
.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(“”)代码>