如何在量angular器/ WebdriverJS中设置默认的浏览器窗口大小
出于某种原因,当我在工作中运行我的testing时,浏览器是最大化的,但是当我在家里运行它时,只会打开宽度约为50%的浏览器窗口。 这会导致一些与向下滚动等不一致的情况,所以我最好能在每台运行testing的机器上打开一个相同大小的浏览器窗口。 什么是最好的方法来做到这一点? (我发现其他语言的一些答案,但一直无法适应他们的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);
如果你得到错误:
WebDriverError: unknown error: operation is unsupported with remote debugging
使用远程debugging时不支持操作某些WebDriver命令(例如,调整浏览器窗口的大小)需要将Chrome扩展程序加载到浏览器中。 ChromeDriver通常在每次启动新的Chrome会话时加载这个“自动扩展”。
但ChromeDriver可以被指示连接到现有的Chrome会话,而不是启动一个新的会话。 这是通过使用Capabilities(也称为ChromeOptions)对象中的“debuggerAddress”来完成的。 由于自动化扩展仅在启动时加载,因此ChromeDriver在通过远程debugging处理现有会话时不支持一些命令。
如果您看到错误“使用远程debugging时不支持操作”,请尝试重写testing,以便启动新的Chrome会话。 这可以通过从Capabilities对象中删除“debuggerAddress”来完成。
来源: https : //sites.google.com/a/chromium.org/chromedriver/help/operation-not-supported-when-using-remote-debugging
你也可以使用你的config.js
来设置窗口大小:
// config.js specs: [ ... ], capabilities: { browserName: 'chrome', chromeOptions: { args: ['--window-size=800,600'] // THIS! } } // ....
如果首选方法:
browser.driver.manage().window().maximize();
不适合你(例如在Xvfb中运行Protractortesting),那么你也可以这样最大化窗口(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); }); }); },
TypeScript版本:
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]); }); }); } };
我只是在我的protractor.conf.js文件中添加了下面的代码,它没有问题。
onPrepare: function() { var width = 1600; var height = 1200; browser.driver.manage().window().setSize(width, height); },
setTimeout和executeScript在你的答案中有什么作用? 我努力在量angular器文档中find最佳实践…
在我看来,直接使用maximize()是一个坏主意,不应该成为首选方法,因为它不会在每个执行testing的机器上设置相同的大小,并且可能会破坏响应行为。