phantomjs:是网页单身吗?

时间:2013-05-09 03:23:26

标签: javascript phantomjs

请参阅下面的代码 我想捕获两个网页 使用phantomjs运行此代码后,我只获得了一个网页截图(www.baidu.com) 是phantomjs singleton的网页吗?我可以在一个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);

1 个答案:

答案 0 :(得分:1)

问题是你的脚本是PhantomJS是异性的。 您的脚本将在

之前结束

有很多方法可以解决这个问题:

延迟脚本结束

setTimeout(function()
{
    phantom.exit(0);
},5000);

使用waitFor example等待所有屏幕截图

使用重复方法

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);
            });
        }
        }
);

确定,您可以同时打开两个页面。