如何在量角器/WebdriverJS中设置默认浏览器窗口大小



出于某种原因,当我在工作中运行测试时,浏览器被最大化,但是当我在家里运行它们时,它只会打开一个大约 50% 宽度的浏览器窗口。这会导致向下滚动等的一些差异,因此理想情况下,我希望让它在运行测试的每台计算机上打开相同大小的浏览器窗口。最好的方法是什么?

(我已经找到了其他语言的一些答案,但我无法将它们改编为 JavaScript)

添加

browser.executeScript('window.moveTo(0,0);' +
    'window.resizeTo(screen.width, screen.height);');

什么都不做(显然window.moveTo谷歌浏览器不支持window.resizeTo)。

您可以通过运行以下命令来设置默认浏览器大小:

var width = 800;
var height = 600;
browser.driver.manage().window().setSize(width, height);

要最大化浏览器窗口,请运行:

browser.driver.manage().window().maximize();

要设置位置,请运行:

var x = 150;
var y = 100;
browser.driver.manage().window().setPosition(x, y);

如果您收到错误:

Web驱动程序错误:未知错误:远程调试不支持操作

使用远程调试时不支持的操作 某些 Web 驱动程序命令(例如调整浏览器窗口大小)需要 Chrome 扩展程序加载到浏览器中。ChromeDriver 通常会加载此内容"自动化扩展程序",每次启动新的 Chrome 会话时。

但是,可以指示ChromeDriver连接到现有的Chrome 会话,而不是启动新的会话。这是使用功能(又名 ChromeOptions)对象中的"调试器地址"。由于自动化扩展仅在启动时加载,因此有ChromeDriver 在使用时不支持的某些命令通过远程调试的现有会话。

如果您看到错误"使用远程时不支持的操作"调试",尝试重写测试,以便启动新的 Chrome会期。这可以通过从功能对象。

源:使用远程调试时不支持的操作

您还可以使用config.js来设置窗口大小:

// config.js
specs: [
    ...
],
capabilities: {
    browserName: 'chrome',
    chromeOptions: {
        args: ['--window-size=800,600'] // THIS!
    }
}
// ....

如果首选方法:

browser.driver.manage().window().maximize();

对你不起作用(例如在 Xvfb 中运行量角器测试),那么你也可以通过这种方式最大化窗口(protractor.conf.js):

onPrepare: function() {
    setTimeout(function() {
        browser.driver.executeScript(function() {
            return {
                width: window.screen.availWidth,
                height: window.screen.availHeight
            };
        }).then(function(result) {
            browser.driver.manage().window().setSize(result.width, result.height);
        });
    });
},

打字稿版本:

import {Config, browser} from "protractor";
export let config: Config = {
    ...
    onPrepare: () => {
        setTimeout(() => {
            browser.driver.executeScript<[number, number]>(() => {
                return [
                    window.screen.availWidth,
                    window.screen.availHeight
                ];
            }).then((result: [number, number]) => {
                browser.driver.manage().window().setSize(result[0], result[1]);
            });
        });
    }
};

我只是在我的量角器.conf.js文件中添加了下面的代码,它确实工作正常。

onPrepare: function() {
    var width = 1600;
    var height = 1200;
    browser.driver.manage().window().setSize(width, height);
},

setTimeout 和 executeScript 在你的答案中有什么作用?我努力在量角器文档中找到最佳实践......

在我看来,直接使用 maximize() 是一个坏主意,不应该是首选方法,因为它不会在执行测试的每台机器上设置相同的大小,并且可能会破坏响应行为。

在硒 4(量角器 6)中,setRect 替换了setSizesetPosition

例如

browser.driver.manage().window().setRect({height: 600, width: 800});

在量角器中.js文件添加以下配置

capabilities: {
    'browserName': 'chrome',
    chromeOptions: {
      args: [
               'start-maximized'
            ]
    }
}

按如下方式修改您的配置.js文件。

onPrepare: function () {
    browser.driver.manage().window().setSize(1280, 1024); // Width, height
},
capabilities: {
    browserName: 'chrome',
    chromeOptions: {
        args: [ "--start-maximized" ] // To start the browser as maximixed
    }
},

如果你想和async/await

您可以像这样全局最大化窗口(一旦浏览器启动)

// protractor.conf.js
exports.config = {
    async onPrepare() {
        // start browser in specified window size
        await browser.driver
            .manage()
            .window()
            .setSize(1920, 1080);
    },
}

添加以下代码。这将最大化浏览器窗口。

browser.driver.manage().window().maximize();

最新更新