簡體   English   中英

phantomjs:網頁是否單例?

[英]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');

更新:
謝謝@Cyber​​maxs
我延遲了腳本的結尾,它可以正常工作。 我有兩個屏幕截圖。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM