Protractor / WebdriverJS में डिफ़ॉल्ट ब्राउज़र विंडो का आकार कैसे सेट करें


107

किसी कारण से जब मैं काम पर अपने परीक्षण चलाता हूं तो ब्राउज़र अधिकतम हो जाता है, लेकिन जब मैं उन्हें घर पर चलाता हूं तो यह केवल लगभग 50% चौड़ाई का ब्राउज़र विंडो खोलता है। यह नीचे स्क्रॉल करने के साथ कुछ विसंगतियों का कारण बनता है, आदि, इसलिए मैं आदर्श रूप से इसे हर मशीन पर उसी आकार की एक ब्राउज़र विंडो खोलना चाहता हूं, जिस पर परीक्षण चलाए जाते हैं। ऐसा करने का सबसे अच्छा तरीका क्या है? (मुझे अन्य भाषाओं के लिए कुछ उत्तर मिले हैं, लेकिन उन्हें जावास्क्रिप्ट के अनुकूल नहीं बनाया जा सका है)

जोड़ा जा रहा है

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

कुछ नहीं करता है, (जाहिर है window.moveToऔर window.resizeToक्रोम द्वारा समर्थित नहीं हैं)।


मेरे पास इस समय आपके लिए कोई उत्तर नहीं है, लेकिन मैं आपको यह बता सकता हूं window.moveToऔर window.scrollToनिश्चित रूप से क्रोम द्वारा समर्थित है।
कॉलिन ब्रॉक

स्क्रोल्टो काम करता है। लेकिन दूसरे नहीं, कम से कम मैं जो बता सकता हूं उससे नहीं। इसे कंसोल में टाइप करने की कोशिश करें ... कुछ नहीं करता है।
jraede

हो रही विषय से हटकर का खतरा होता है, यहाँ एक बेला है कि दिखाता है window.moveToऔर window.resizeTo। यह क्रोम में मेरे लिए ठीक काम करता है। मुझे नहीं पता है कि आप क्रोम में कंसोल से वर्तमान विंडो का आकार बदल सकते हैं, लेकिन यह तथ्य कि resizeToविधि वहां उपलब्ध है, यह दर्शाता है कि क्रोम इसका समर्थन करता है।
कोलिन ब्रॉक

ठीक है, लगता है कि नई विंडो के लिए काम कर रहा है जो ब्राउज़र जेएस के साथ खुलता है। लेकिन वर्तमान विंडो के साथ काम नहीं करता है, जो मुझे चाहिए।
jraede

1
मेरा परीक्षण इस बात के लिए है कि क्या चीजें काम करती हैं या नहीं और अलग-अलग उत्तरदायी कॉन्फ़िगरेशन में दिखाई देती हैं, इसलिए मुझे प्रत्येक परीक्षण के लिए विंडो के आकार को नियंत्रित करने में सक्षम होना चाहिए।
जारेड

जवाबों:


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

दूरस्थ डिबगिंग का उपयोग करते समय ऑपरेशन समर्थित नहीं है कुछ वेबड्राइवर कमांड (जैसे ब्राउज़र विंडो का आकार बदलना) को ब्राउज़र में लोड करने के लिए क्रोम एक्सटेंशन की आवश्यकता होती है। ChromeDriver सामान्य रूप से इस "स्वचालन विस्तार" को लोड करता है हर बार जब यह एक नया क्रोम सत्र लॉन्च करता है।

हालाँकि ChromeDriver को नया लॉन्च करने के बजाय मौजूदा Chrome सत्र से कनेक्ट करने का निर्देश दिया जा सकता है। यह क्षमताओं (उर्फ ChromeOptions) ऑब्जेक्ट में 'debuggerAddress' का उपयोग करके किया जाता है। चूंकि स्वचालन का विस्तार केवल स्टार्टअप पर भरा हुआ है, ऐसे कुछ आदेश हैं जो Chrome डीग्रीवर दूरस्थ डिबगिंग के माध्यम से मौजूदा सत्रों के साथ काम करते समय समर्थन नहीं करते हैं।

यदि आपको "दूरस्थ डिबगिंग का उपयोग करते समय ऑपरेशन समर्थित नहीं है" त्रुटि दिखाई देती है, तो परीक्षण को फिर से लिखने का प्रयास करें ताकि यह एक नया क्रोम सत्र लॉन्च करे। यह क्षमता ऑब्जेक्ट से 'डीबगर एग्रेस' को हटाकर किया जा सकता है।

स्रोत: https://sites.google.com/a/chromium.org/chromedriver/help/operation-not-supported-when-use-remote-debugging


10
browser.driver.manage().window().maximize();
बेन

8
यदि आप अपने सभी परीक्षणों के लिए समान रिज़ॉल्यूशन चाहते हैं, तो आप अपनी protractor.conf.jsफ़ाइल के onPrepareफ़ंक्शन में उपरोक्त कॉल कर सकते हैं ।
nwinkler

1
@BenSmith यकीन नहीं क्यों, लेकिन browser.driver.manage().window().maximize();वास्तव में मेरे लिए खिड़की को अधिकतम नहीं करता है। मुझे बस थोड़ी बड़ी खिड़की मिलती है। मैं अंत में setSize()विधि के साथ एक चौड़ाई और ऊंचाई निर्दिष्ट करता
हूं

1
@AlexandrosSpyropoulos: यह काम करना चाहिए, लेकिन आपको यह सुनिश्चित करना होगा कि आप कुछ मौन संकल्प में xvfb नहीं चला रहे हैं। डिफ़ॉल्ट रूप से उदाहरण के लिए यह 640x480 है।
ताड़ास ससूनसकस

1
@LeeGee अपडेटेड उत्तर।
रेज़वान फ़्लेवियस पांडा

42

आप अपने config.jsविंडो आकार को सेट करने के लिए भी उपयोग कर सकते हैं

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

आपको डबल डैश हटाने की आवश्यकता है: args: ['विंडो-साइज = 800,600']
ezain

3
यह मेरे लिए उम्मीद के मुताबिक काम करता है जैसा कि जवाब में दिखाया गया है।
भिक्षु

यह भी ब्राउज़र के आकार को तब सेट करता है जब e2e स्क्रिप्ट को '--headless' आर्ग्स के साथ चलाता है। यदि मेनू मोबाइल दृश्य में स्थानांतरित हो जाता है तो यह आसान है।
tony2tones

28

यदि पसंदीदा तरीका:

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

आपके लिए काम नहीं करता है (उदाहरण के लिए Xvfb में प्रोटेक्टर टेस्ट चल रहा है), तो आप इस तरह से विंडो को अधिकतम कर सकते हैं (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);
        });
    });
},

टाइपस्क्रिप्ट संस्करण:

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

ऑटो के साथ सबसे अच्छा विचारधारा अधिकतम रिज़ॉल्यूशन प्राप्त करता है, लेकिन आप सेटपोज़िशन (0, 0) को भूल गए हैं, इसलिए यह स्क्रीन पर बिल्कुल ठीक होगा
एंड्रयू

एचएम, मेरा ब्राउज़र पहले से ही 0-0 की स्थिति में शुरू होता है। लेकिन अगर किसी को जरूरत हो तो अच्छी बात है।
मार्टिन स्ज़नापका

मेरा शुरू होता है ... 50,50 या कुछ और .. बस कह रहा हूं :)
एंड्रयू

यह ओएस पर निर्भर हो सकता है, यहाँ यह विंडोज 8.1 हाइपर- V के अंदर चलता है
एंड्रयू

16

मैंने बस अपने प्रोट्रैक्टर.कॉन्फ़.जेएस फ़ाइल में नीचे दिए गए कोड को जोड़ा और यह ठीक काम किया।

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

आपके उत्तर में सेटटाइमआउट और एक्ज़ीक्यूटस्क्रिप्ट किस उद्देश्य से कार्य करता है? मैं सबसे अच्छा डॉक्टर्स डॉक्टर्स में अभ्यास करने के लिए संघर्ष ...

मेरे दिमाग में सीधे अधिकतम () का उपयोग करना एक बुरा विचार है और इसे पसंदीदा तरीका नहीं होना चाहिए, क्योंकि यह हर मशीन पर समान आकार निर्धारित नहीं करेगा जहां परीक्षण निष्पादित किए जाते हैं, और उत्तरदायी व्यवहारों को तोड़ सकते हैं।


4

सेलेनियम 4 (प्रोट्रैक्टर 6) में, setRectजगह setSizeऔरsetPosition

उदाहरण के लिए,

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

3

Protractor.conf.js फ़ाइल में निम्न कॉन्फ़िगरेशन जोड़ें

क्षमताएं: {'ब्राउज़रनाम': 'क्रोम', क्रोमऑक्शन: {args: ['स्टार्ट-मैक्सिमाइज़्ड']}}


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 में आपका स्वागत है। पहले से ही उत्तर हैं जो इस जानकारी को बहुत अधिक स्पष्टीकरण प्रदान करते हैं। कृपया अपने उत्तर सुनिश्चित करें कि प्रश्न में कुछ नया जोड़ा गया है।
साइमन.SA
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.