首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows环境下的多个无头浏览器?

Windows环境下的多个无头浏览器?
EN

Stack Overflow用户
提问于 2013-08-31 21:46:20
回答 3查看 1.1K关注 0票数 0

是否有办法在Windows中使用多个无头浏览器(同时)进行web自动化测试?

最好,我需要自动化的浏览器与完全的javascript支持,这样一个现代化的Qt后端,与webkit的实现,将是理想的。

斯平纳Ghost.py看起来很有前途,但只支持“多浏览器”设置的X11环境。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-16 16:48:33

在过去的一年里,我用了两种语言.

我使用zombie作为节点,Ghost.py用于python。

Qt后端现在支持浏览器对象中的“选项卡”,允许多个沙箱浏览器同时运行。我相信也有一个增强,它打破了一个webkit模型之间的共享实例,不允许一次实例化多个实例。

在节点上,我已经有超过60个使用对象池旋转的独立浏览器,而在Python中,我只需要20-30,但它也运行得非常完美。

票数 0
EN

Stack Overflow用户

发布于 2013-09-05 12:13:38

看看https://github.com/sgentle/phantomjs-node,它说:“您也可以通过多次调用phantom.create()来创建多个幻影进程,所以如果您出于某种疯狂的原因需要这样做,请自便!”

此外,https://groups.google.com/forum/#!msg/phantomjs/Uj5SV6o214w/chFBUnw3vxQJ还提到在一个Phantom.js线程上运行多个“页面请求”。另外,http://daker.me/2013/07/testing-your-responsive-design-with-phantomjs.html展示了一种使用异步库实现这一功能的方法。

我让它使用以下代码:

代码语言:javascript
复制
var phantom = require('phantom');
var async = require('async');

var pagesToCall = [
    ['http://www.google.com', 8000],
    ['http://www.allthingsd.com', 8001],
    ['http://www.wired.com', 8002],
    ['http://www.mashable.com', 8003],
    ['http://www.stackoverflow.com', 8004]
];

function callPage(pageToCall) {

    console.log(new Date().getTime() + ': Started page ' + pageToCall[0]);
    console.log(new Date().getTime() + ': port:' + pageToCall[1]);

    phantom.create({port: pageToCall[1]}, function(ph) {

        ph.createPage(function(page) {

            page.open(pageToCall[0], function(status) {

                console.log(new Date().getTime() + ': Opened page? %s', status);

                page.set('viewportSize', {
                    width: 1280,
                    height: 800
                });
                page.set('settings.userAgent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1');

                var filename = pageToCall[0].replace('http:\/\/', '') + '.png';
                page.render('./screenshots/' + filename, function() {

                    console.log(new Date().getTime() + ': Wrote page ' + pageToCall[0]);
                    page.close();
                    ph.exit();

                });

            });

        });

    });

}

//Main
async.each(pagesToCall, callPage, function (e) {
    if (e) console.log(e);
});

这是一次快速的黑客攻击。我相信,只要再花点时间,就可以更好地实现这一点。pagesToCall数组有两个参数:要调用的网站的URL和与PhantomJS通信套接字的端口号。

我使用的NodeJS模块是:

票数 0
EN

Stack Overflow用户

发布于 2013-09-09 19:50:18

那么http://dalekjs.com/呢,它看起来很有前途。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18553112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档