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

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

첨가

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

원격 디버깅을 사용할 때 지원되지 않는 작업 일부 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


답변

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

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


답변

선호하는 방법 :

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]);
            });
        });
    }
};


답변

protractor.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});


답변

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

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


답변

아래와 같이 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 
         }
    },