出于某种原因,当我在工作中运行测试时,浏览器被最大化,但是当我在家里运行它们时,它只会打开一个大约 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
替换了setSize
和setPosition
例如
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();