使用Nightmare.js根据类名称选择和单击元素

时间:2018-08-03 09:47:22

标签: javascript html5 css3 web-scraping nightmare

im试图选择一个带有div的图像元素,然后使用nightmare.js单击它。下面是我要点击的元素,下面是我正在使用的代码。

 <div class="custom-navigator-right"><img onload="this.__gwtLastUnhandledEvent=&quot;load&quot;;" src="http://iris.generali.gr/iris/webiris/clear.cache.gif" style="width:40px;height:43px;background:url(data:image/png;base64,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) no-repeat 0px 0px;" class="gwt-Image" border="0"></div>

.evaluate(()=>{
  let divs=   document.getElementsByClassName("custom-navigator-right");
  for (var div of divs)
          div.click();
})

我是nightmare.js的新手,并且在网络抓取中非常感谢。

1 个答案:

答案 0 :(得分:0)

您的代码应该可以正常工作,如果您想查看浏览器GUI,则可能要添加的唯一内容是评估后的.then()或将评估放在.then()中。 下面是有效的代码,运行时它会检查页面上的所有复选框。

var Nightmare = require('nightmare')
var nightmare = Nightmare({ show: true })
nightmare
    .goto('https://materializecss.com/checkboxes.html')
    .wait('label input[type="checkbox"]')
    .evaluate(function() {
        let checkboxes = document.querySelectorAll('label input[type="checkbox"]')
        for (let checkbox of checkboxes) checkbox.click()
    })
    .then(function() {
        console.log('Im here just to show the GUI')
    })

var Nightmare = require('nightmare')
var nightmare = Nightmare({ show: true })
nightmare
    .goto('https://materializecss.com/checkboxes.html')
    .wait('label input[type="checkbox"]')
    .then(function() {
        return nightmare.evaluate(function() {
            let checkboxes = document.querySelectorAll('label input[type="checkbox"]')
            for (let checkbox of checkboxes) checkbox.click()
        })
    })