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

出于某种原因,当我在工作中运行我的testing时,浏览器是最大化的,但是当我在家里运行它时,只会打开宽度约为50%的浏览器窗口。 这会导致一些与向下滚动等不一致的情况,所以我最好能在每台运行testing的机器上打开一个相同大小的浏览器窗口。 什么是最好的方法来做到这一点? (我发现其他语言的一些答案,但一直无法适应他们的JavaScript)

添加

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

什么都不做,(显然window.moveTowindow.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的机器上设置相同的大小,并且可能会破坏响应行为。