我正在尝试console.log每个匹配页面上某个类的元素的内部文本。使用Nightmare.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)
// })
答案 0 :(得分:1)
querySelectorAll
返回一个dom元素数组,因此你必须遍历每个元素以获取innerTEXT。
.evaluate(function () {
document.querySelectorAll('.result__url__domain').forEach(function(singleElement){
console.log(singleElement.innerText);
});
})