Protractor / WebdriverJS에서 기본 브라우저 창 크기를 설정하는 방법


107

어떤 이유로 직장에서 테스트를 실행하면 브라우저가 최대화되지만 집에서 실행하면 약 50 % 너비의 브라우저 창만 열립니다. 이로 인해 아래로 스크롤하는 등의 불일치가 발생하므로 테스트가 실행되는 모든 컴퓨터에서 동일한 크기의 브라우저 창을 열도록하는 것이 이상적입니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? (다른 언어에 대한 답변을 찾았지만 자바 스크립트에 적응할 수 없었습니다)

첨가

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

아무것도하지 않는다 (명백하게을 window.moveTo하고 window.resizeTo크롬에서 지원되지 않습니다).


현재 답변을 드릴 수는 없지만 말씀 드릴 수 window.moveTo있으며 window.scrollToChrome에서 확실히 지원됩니다.
Colin Brock 2013

scrollTo가 작동합니다. 그러나 다른 사람들은 적어도 내가 말할 수있는 것은 아닙니다. 콘솔에 입력 해보십시오 ... 아무것도하지 않습니다.
jraede

오프 주제에 걸릴 위험에서, 여기에 바이올린입니다 설명 window.moveTo하고 window.resizeTo. Chrome에서 잘 작동합니다. Chrome의 콘솔에서 현재 창 크기를 조정할 수 있는지 모르겠지만 해당 resizeTo방법을 사용할 수 있다는 사실 은 Chrome이 지원한다는 것을 나타냅니다.
Colin Brock 2013

좋아, 브라우저가 JS로 열리는 새 창에서 작동하는 것 같습니다. 하지만 내가 필요한 현재 창에서 작동하지 않습니다.
jraede

1
내 테스트는 작동 여부와 다른 반응 형 구성에서 표시되는지 여부에 대한 것이므로 각 테스트의 창 크기를 제어 할 수 있어야합니다.
jraede

답변:


191

다음을 실행하여 기본 브라우저 크기를 설정할 수 있습니다.

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

원격 디버깅을 사용할 때 지원되지 않는 작업 일부 WebDriver 명령 (예 : 브라우저 창 크기 조정)은 브라우저에 Chrome 확장 프로그램을로드해야합니다. ChromeDriver는 일반적으로 새 Chrome 세션을 시작할 때마다이 '자동화 확장 프로그램'을로드합니다.

그러나 ChromeDriver는 새 세션을 시작하는 대신 기존 Chrome 세션에 연결하도록 지시 할 수 있습니다. 이는 Capabilities (일명 ChromeOptions) 개체에서 'debuggerAddress'를 사용하여 수행됩니다. 자동화 확장 프로그램은 시작시에만로드되므로 원격 디버깅을 통해 기존 세션으로 작업 할 때 ChromeDriver가 지원하지 않는 몇 가지 명령이 있습니다.

'원격 디버깅을 사용할 때 지원되지 않는 작업'오류가 표시되면 새 Chrome 세션을 시작하도록 테스트를 다시 작성해보세요. Capabilities 개체에서 'debuggerAddress'를 제거하면됩니다.

출처 : https://sites.google.com/a/chromium.org/chromedriver/help/operation-not-supported-when-using-remote-debugging


10
그것은 사용하여 전체 화면 크기로 브라우저를 극대화 할 수도 있습니다browser.driver.manage().window().maximize();
벤 스미스

8
모든 테스트에 대해 동일한 해상도를 원하면 위의 protractor.conf.js 파일의 onPrepare함수 .
nwinkler 2014-06-25

1
@BenSmith는 이유를 잘 모르지만 browser.driver.manage().window().maximize();실제로 창을 최대화하지는 않습니다. 약간 큰 창이 나타납니다. 나는 단지 너비와 높이를 지정하는 것으로 끝납니다.setSize() 방법
jetcom

1
@AlexandrosSpyropoulos : 작동해야하지만 어리석은 해상도로 xvfb를 실행하고 있지 않은지 확인해야합니다. 예를 들어 기본적으로 640x480입니다.
Tadas Sasnauskas 2014 년

1
@LeeGee 업데이트 된 답변.
Răzvan Flavius ​​Panda

42

를 사용하여 config.js창 크기를 설정할 수도 있습니다 .

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

이중 대시를 제거해야합니다. args : [ 'window-size = 800,600']
ezain

3
이것은 대답에 표시된 것처럼 이중 대시와 함께 예상대로 작동합니다.
Monkpit

이것은 또한 '--headless'인수로 e2e 스크립트를 실행할 때 브라우저 크기를 설정합니다. 메뉴가 모바일보기로 전환되면 편리합니다.
tony2tones

28

선호하는 방법 :

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

작동하지 않는 경우 (예 : Xvfb에서 Protractor 테스트 실행) 다음과 같이 창을 최대화 할 수도 있습니다 (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]);
            });
        });
    }
};

자동으로 최대 해상도를 얻을 수있는 최상의 아이디어,하지만 setPosition (0, 0)을 잊어 버려서 화면 위에 정확히 표시됩니다
Andrew

내 브라우저는 이미 0-0 위치에서 시작합니다. 그러나 누군가가 필요하다면 좋은 지적입니다.
Martin Sznapka

내 시작 ... 50,50 또는 뭔가 .. 그냥 말 :)
Andrew

는 OS에 따라 달라질 수 있습니다, 여기에는 Hyper-V를 내부에 윈도우 8.1을 실행이다
앤드류

16

protractor.conf.js 파일에 아래 코드를 추가하기 만하면 정상적으로 작동합니다.

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

setTimeout 및 executeScript는 귀하의 답변에서 어떤 용도로 사용됩니까? 각도기 문서에서 모범 사례를 찾는 데 어려움을 겪습니다 ...

내 생각에 직접 maximize ()를 사용하는 것은 나쁜 생각이며 선호하는 방법이되어서는 안됩니다. 테스트가 실행되는 모든 컴퓨터에서 동일한 크기를 설정하지 않고 응답 동작을 중단 할 수 있기 때문입니다.


4

셀레늄 4 (각도기 6)에서, setRect대체 setSizesetPosition

예를 들면

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

3

Protractor.conf.js 파일에서 다음 구성을 추가하십시오.

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


0

아래와 같이 config.js 파일을 수정하십시오.

 onPrepare: function () {
      browser.driver.manage().window().setSize(1280, 1024); //width , height

       }, 
 capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ "--start-maximized" ] // to start browser as maximixed 
         }
    },

-1

아래 코드를 추가하면 브라우저 창이 최대화됩니다.

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

stackoverflow에 오신 것을 환영합니다. 이 정보에 훨씬 더 많은 설명을 제공하는 답변이 이미 있습니다. 귀하의 답변이 질문에 새로운 것을 추가하는지 확인하십시오.
Simon.SA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.