Tag: 噩梦

如何解决噩梦.click()问题不传播?

我已经减less了我与这个最小的例子与公共网站的问题。 点击“全部显示”button会触发更多的网站在每个浏览器中都可见,但不是噩梦: var Nightmare = require('nightmare'); new Nightmare({timeout: 60000}) .viewport(1920, 10000) .goto('http://mtv.de/charts/5-hitlist-germany-top-100') .wait(10000) .screenshot('before.png') .click('div#content div.chart-container a.button.show-all') .wait(20000) .screenshot('after.png') .run(); 我甚至试图用jQuery('…').trigger('click')触发点击jQuery('…').trigger('click') ,它可以在Chrome中工作,但不是在恶梦中.evaluate(…) 。 这里是运行上面的例子的debugging输出,没有什么特别的: nightmare queueing action "viewport" +0ms nightmare queueing action "goto" +3ms nightmare queueing action "wait" +0ms nightmare queueing action "screenshot" +0ms nightmare queueing action "click" +0ms nightmare queueing action "wait" +0ms nightmare […]

噩梦js浏览和parsing多个网站

我正在尝试使用github.com/segmentio/nightmare自动化2个站点 例: 我想去site_1 (临时电子邮件服务)并获得一封电子邮件。 然后转到site_2并填写该电子邮件,然后提交表单。 然后去site_1查看电子邮件是否到达 parsing激活链接的电子邮件 然后点击该链接并再次转到site_2 。 ………..等 是噩梦js和node.js好这种浏览器操纵? 因为对于官方API等简单的东西没关系: var Nightmare = require('nightmare'); new Nightmare() .goto('http://yahoo.com') .type('input[title="Search"]', 'github nightmare') .click('.searchsubmit') .run(function (err, nightmare) { if (err) return console.log(err); console.log('Done!'); }); 那复杂的东西呢? 谢谢

如何按照数组内容的顺序执行async.map函数

我有下面的代码例程,很好用。 唯一的问题是,我需要的结果回来的links数组相同的顺序。 例如,我需要首先返回google.com链接的结果,然后是雅虎等。代码当前以“随机”顺序返回。 var Nightmare = require('nightmare'); var async = require('async'); var links = [ "http://www.google.com", "http://www.yahoo.com", "http://www.bing.com", "http://www.aol.com", "http://duckduckgo.com", "http://www.ask.com" ]; var scrape = function(url, callback) { var nightmare = new Nightmare(); nightmare.goto(url); nightmare.wait('body'); nightmare.evaluate(function () { return document.querySelector('body').innerText; }) .then(function (result) { console.log(url, result); }) nightmare.end(function() { callback(); }); } async.map(links, scrape); 更新:谢谢@christophetd。 […]

噩梦/电子,如何进行不同的操作取决于一个元素是否存在?

我想使用Nightmare进入一个页面,并根据指定的元素是否存在做不同的操作。 我知道有一个exists函数来testing一个元素是否存在于页面上,但我不知道如何使用它或是否可以在这里使用。 有人可以给我一个如何做这个任务的例子吗? 谢谢!

nightmarejs用querySelectorAll刮取多个元素

我试图从一个instagram的个人资料页面用nightmarejs(使用电子作为浏览器phantomjs衍生物)刮取一些信息。 目标是获取configuration文件上所有图像的ALT标签(例如,我只关注“显示更多”button之前的图像) var Nightmare = require('nightmare'); var nightmare = Nightmare({ show: true }); nightmare .goto('https://www.instagram.com/ackerfestival/') .evaluate(function () { let array = […document.querySelectorAll('._icyx7')]; return array.length; }) .end() .then(function (result) { console.log(result); }) .catch(function (error) { console.error('Search failed:', error); }); 这个例子工作,数组长度为12.电子浏览器打开和closures,所以一切都很好。 但是,如果我改变返回只是数组,电子浏览器从不closures,我没有得到一个console.log。 我究竟做错了什么? 我想从数组或对象的图像中获取所有信息。

梦魇有条件的等待()

我正在尝试使用梦魇来抓取网页,但是只有等到#someelem存在时才会出现。 否则,我想让梦魇继续前进。 这怎么可以使用.wait() ? 我不能使用.wait(ms) 。 使用.wait(selector)意味着梦魇将一直等待,直到元素出现,但是如果页面永远不会有这个元素,那么梦魇将永远等待。 最后一个选项是使用.wait(fn) 。 我已经尝试过这样的事情了 .wait(function(cheerio) { var $ = cheerio.load(document.body.outerHTML); var attempt = 0; function doEval() { if ( $('#elem').length > 0 ) { return true; } else { attempt++; if ( attempt < 10 ) { setTimeout(doEval,2000); //This seems iffy. } else { return true; } } } […]

NightmareJS:如何阻止加载资源?

我正在做一个噩梦般的小型刮板,但是加载所有的外部资源需要很长的时间,并消耗大量的带宽。 我怎样才能加载基本页面的HTML(没有图像,CSS等)? 我在网上找不到任何相关信息,也许我找错了地方。

NightmareJS:如何设置cookie?

var Nightmare =要求('噩梦'); var nightmare =噩梦({ 显示:真的 }) 恶梦 .goto( 'https://mail.yandex.ru') .type('input [name = login]','mylogin') .type('input [name = passwd]','mypassword') 。点击( 'button.nb-button._nb – 动作 – button.nb基团的启动') .wait(“邮件的用户名”) .cookies.get() 。然后(函数(cookies){ //行动 }) 我得到授权后得到cookies,但我不知道我必须在哪里设置它们,以及如何设置它们。 我已经尝试在开始时执行.cookie.set() ,但这不起作用。 我如何使用保存的cookie? 谢谢。

nightmare.js不返回任何输出

我试着用下面的命令运行我的test.js文件: DEBUG=nightmare node –harmony test.js 并输出: nightmare queueing action "goto" for http://google.com +0ms nightmare queueing action "wait" +2ms nightmare queueing action "screenshot" +0ms test.js: var Nightmare = require('nightmare'); var google = new Nightmare() .goto('http://google.com') .wait() .screenshot("./screen.png") .run(function(err, nightmare) { if (err) return console.log(err); console.log('Done!'); }); 没有截图和链接访问。 有什么想法吗? 注意:我正在使用Linux Guest虚拟机。

用nightmarejs点击图像

在这个问题上我一直在挣扎几天。 我正在使用nightmarejs在ebay产品列表页面上点击图片。 单击时,图像的全尺寸版本将出现在Lightbox中。 Nightmarejs只是不会点击这个图像! 我可以点击其他链接,但图像永远不会被点击,所以没有灯箱popup。 这是我想要点击的图像: URL: http : //www.ebay.com/itm/Newton-Distance-S-III-Lime-Red-Running-Shoes-Mens-M-New-155/311559183260?hash= item488a5fdb9c& _trkparms=5374%3AFeatured%7C5373% 3A0 这是我的代码: var Nightmare = require('nightmare'); var selector1 = '#PicturePanel div.pp-ic.pp-ic500 table tbody tr a#linkMainImg'; var selector2 = '#PicturePanel div.pp-ic.pp-ic500 table tbody tr a#linkMainImg #mainImgHldr'; var selector3 = '#PicturePanel div.pp-ic.pp-ic500 table tbody tr a#linkMainImg #mainImgHldr img#icImg'; var selector4 = '#PicturePanel div.pp-ic.pp-ic500 table tbody […]