[英]phantomjs: is webpage singleton?
參見下面的代碼。
我要捕獲兩個網頁。
使用phantomjs運行此代碼后,我僅獲得一個網頁截圖(www.baidu.com)。
網頁是否在phantomjs單例中? 我可以在一個phantomjs實例中打開兩個網頁嗎?
var webpage1 = require('webpage').create();
webpage1.onLoadFinished = function() {
webpage1.render('1.png');
}
webpage1.open('http://www.google.com');
var webpage2 = require('webpage').create();
webpage2.onLoadFinished = function() {
webpage2.render('2.png');
}
webpage2.open('http://www.baidu.com');
更新:
謝謝@Cybermaxs
我延遲了腳本的結尾,它可以正常工作。 我有兩個屏幕截圖。
var webpage1 = require('webpage').create();
webpage1.onLoadFinished = function() {
webpage1.render('1.png');
}
webpage1.open('http://www.google.com.cn');
var webpage2 = require('webpage').create();
webpage2.onLoadFinished = function() {
webpage2.render('2.png');
}
webpage2.open('http://www.baidu.com');
setTimeout(function() {
console.log(webpage1.url);
console.log(webpage2.url);
phantom.exit(0);
}, 9000);
問題是您的腳本是PhantomJS本質上是異步的。 您的腳本將在
有很多方法可以解決此問題:
延遲腳本結束
setTimeout(function()
{
phantom.exit(0);
},5000);
使用waitFor例如等待所有屏幕截圖
使用遞歸方法
var webpage = require('webpage').create();
webpage.open('http://www.google.com', function(status)
{
if (status !== 'success') {
console.log('FAIL to load the address');
} else
{
webpage.render('1.png');
webpage.open('http://www.baidu.com',function(status)
{
if (status !== 'success') {
console.log('FAIL to load the address');
} else
{
webpage.render('2.png');
}
phantom.exit(0);
});
}
}
);
當然,您可以同時打開兩個頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.