任何无头浏览器的量角器?

时间:2014-10-14 12:14:42

标签: angularjs protractor headless-browser

我正在使用量角器,当我将chrome指定为browsertype时,它可以正常工作。我正在寻找一个无头浏览器示例代码,我已经找了phantomJs但我无法运行其中任何一个。是否有另一个无头浏览器的工作样本?

2 个答案:

答案 0 :(得分:5)

除了PhantomJS之外没有其他无头浏览器,而后者与量角器是一个死胡同。

您可以尝试docker-selenium,或者,如果您不喜欢Docker,可以使用ubuntu-headless样本自行完成。这两种解决方案都提供Chrome& Firefox使用Xvfb,即使没有真正的DISPLAY。

更新2 似乎可以在OSX中运行Xvfb:http://xquartz.macosforge.org/landing/

更新1 Mac OSX selenium headless解决方案:

启用对OSX计算机的多用户远程桌面访问

因此可以在Mac上测试硒无头。真的不是无头,而是作为另一个用户,所以它不会干扰您当前的用户显示。 为此,您需要kickstart:http://support.apple.com/en-us/HT201710 开始使用kickstart实用程序

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -restart -agent

激活远程桌面共享,为所有用户启用访问权限并重新启动ARD代理:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -restart -agent -privs -all 
Apple Remote Desktop 3.2或更高版本

允许所有用户访问并为所有用户提供完全访问权限

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -configure -allowAccessFor -allUsers -privs -all

Kickstart帮助命令

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -help

答案 1 :(得分:1)

当存在div时,PhantomJS在某些网站上是Protractor的死胡同,它是固定的并且始终可见(由于https://github.com/ariya/phantomjs/issues/11637)。否则你可以使它工作:

使用phantomjs:~1.9.0和量角器:~1.8.0

内部量角器配置文件寄存器功能:

 onPrepare : function() {

    var minWindowWidth = 1024,
    minWindowHeight = 768,
    browserName,
    platform,
    window = browser.manage().window();

    browser.getCapabilities().then(function (capabilities) {
        browserName = capabilities.caps_.browserName;
        platform = capabilities.caps_.platform;
    }).then(function getCurrentWindowSize() {
        return window.getSize();
    }).then(function setWindowSize(dimensions) {
        var windowWidth = Math.max(dimensions.width, minWindowWidth),
            windowHeight = Math.max(dimensions.height, minWindowHeight);

        return window.setSize(windowWidth, windowHeight);
    }).then(function getUpdatedWindowSize() {
        return window.getSize();
    }).then(function showWindowSize(dimensions) {
        console.log('Browser:', browserName, 'on', platform, 'at', dimensions.width + 'x' + dimensions.height);
        console.log("Running e2e tests...");
    });     

},