有没有办法用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