programing

프로젝터/웹 드라이버에서 기본 브라우저 창 크기를 설정하는 방법JS

muds 2023. 2. 25. 22:28
반응형

프로젝터/웹 드라이버에서 기본 브라우저 창 크기를 설정하는 방법JS

어떤 이유로 직장에서 테스트를 실행하면 브라우저가 최대화되지만 집에서 테스트를 실행하면 약 50% 너비의 브라우저 창만 열립니다.스크롤 다운 등의 차이가 있기 때문에 테스트를 실행하는 모든 머신에서 같은 크기의 브라우저 창을 열었으면 합니다.어떻게 하면 좋을까요?

(다른 언어에 대한 답변은 찾았지만 JavaScript에 적응하지 못했습니다.)

추가 중

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

하지 않다window.moveTo ★★★★★★★★★★★★★★★★★」window.resizeToGoogle Chrome 서서서서서서서서니 다다다다다다다다 ) 。

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

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: 알 수 없는 오류: 원격 디버깅에서 작업이 지원되지 않습니다.

원격 디버깅 사용 시 작업이 지원되지 않음 일부 WebDriver 명령(예: 브라우저 창 크기 조정)을 사용하려면 브라우저에 Chrome 확장을 로드해야 합니다.ChromeDriver는 보통 새로운 Chrome 세션을 시작할 때마다 이 "자동 확장"을 로드합니다.

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

원격 디버깅을 사용할 때 작업이 지원되지 않습니다.라는 오류가 표시되면 테스트를 다시 작성하여 새 Chrome 세션을 시작하십시오.이를 수행하려면 Capabilities 개체에서 'debuggerAddress'를 제거합니다.

출처: 원격 디버깅 사용작업이 지원되지 않습니다.

,도할 수 .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);
},

set Timeout 및 execute Script는 어떤 목적으로 응답합니까?나는 절삭기 문서에서 베스트 프랙티스를 찾으려고 애쓰고 있다...

제 생각에는 직접 maximize()를 사용하는 것은 좋지 않은 생각이며, 권장되는 방법이 아닙니다. 왜냐하면 테스트가 실행되는 모든 머신에 동일한 크기가 설정되지 않고 반응성이 저하될 수 있기 때문입니다.

셀레늄 4(프로덕터 6)에서는setRect치환하다setSize그리고.setPosition

예를들면,

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

Extractor.conf.js 파일에서 다음 구성을 추가합니다.

capabilities: {
    '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 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();

언급URL : https://stackoverflow.com/questions/20023567/how-to-set-default-browser-window-size-in-protractor-webdriverjs

반응형