有没有办法用CasperJS取得新的文物的仪表板截图?

我尝试从新的文物洞察仪表板捕捉一些图像,但是它不起作用。

该脚本几个星期前工作,但现在,我只是在顶部有一个橙色边框的空白图像(如果JavaScript未启用)。

有我的脚本: http : //pastebin.com/aiBiWXqK

它适用于login页面,但对于其他两个捕获,它显示一个空的页面。

我在.sh文件中像这样运行这个脚本。

PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs /usr/local/bin/casperjs --cookie-file=$(pwd)/tv-cookies.txt $(pwd)/capture.js --ssl-protocol=any --ignore-ssl-errors=true 

我试图casper.wait(fun, 300000) ,以确保它将完全加载。

我试图casper.waitForSelector('.dashboard-widgets', fn)来检查select器是否被创build,但它不会工作。

我知道仪表板是用Angular创build的,但我试图捕获用Angular制作的其他网站,没关系。

有谁知道如何做到这一点? 或者使用任何build议或其他包来做到这一点?

我尝试了Nightmare.js ! 它工作#1! 很容易理解和阅读!

 var nightmare = Nightmare(); var NRdashboard = nightmare .viewport(1920, 1080) .useragent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36') .goto('https://login.newrelic.com/login') .wait() .screenshot(content_dir + '/others/nightmare/login.png') .type('#login_email', '***') .type('#login_password', '***') .screenshot(content_dir + '/others/nightmare/loginFilled.png') .click('#login_submit') .wait(2000) .screenshot(content_dir + '/others/nightmare/dashboard.png') .goto('https://insights.newrelic.com/accounts/123456') .wait(2000) .screenshot(content_dir + '/others/nightmare/dashboard2.png') .run(function (err, nightmare) { if (err) return console.log(err); console.log('Done!'); }); 

CasperJS的命令行用法是这样的:

 casperjs [options] script [script_args] 

问题是你打开一个旧版本的PhantomJS的https站点,所以你需要--ssl-protocol=any --ignore-ssl-errors=true命令行选项( 这是为什么 )。 正如你在上面的“用法”中看到的,CasperJS需要传递给PhantomJS的选项实际上并没有给CasperJS本身,而是给脚本。

将两个必要的命令行选项移到前面一个参数:

 PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs /usr/local/bin/casperjs --cookie-file=$(pwd)/tv-cookies.txt --ssl-protocol=any --ignore-ssl-errors=true $(pwd)/capture.js