Protractor / WebdriverJSでデフォルトのブラウザウィンドウサイズを設定する方法


107

何らかの理由で職場でテストを実行するとブラウザーは最大化されますが、自宅でテストを実行すると、幅が約50%のブラウザーウィンドウしか開かれません。これにより、下にスクロールするなどの不一致が生じるため、テストを実行するすべてのマシンで同じサイズのブラウザーウィンドウを開くようにしたいのですが。これを行う最良の方法は何ですか?(私は他の言語のいくつかの答えを見つけましたが、それらをjavascriptに適応させることができませんでした)

追加

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

何もしません(どうやらwindow.moveTowindow.resizeToChromeではサポートされていません)。


私はこの時点であなたのための答えを持っていないが、私はあなたにそれを伝えることができますwindow.moveToし、window.scrollTo間違いなくクロームでサポートされています。
Colin Brock

scrollToが機能します。しかし、他の人はそうではなく、少なくとも私が言えることからはそうではありません。コンソールに入力してみてください...何も起こりません。
jraede 2013年

話題から外れるリスクがあるので、ここにとを示すフィドルwindow.moveToありwindow.resizeToます。Chromeの場合は問題なく動作します。Chromeのコンソールから現在のウィンドウのサイズを変更できるかどうかはわかりませんが、resizeToそこでメソッドを使用できるということは、Chromeがそれをサポートしていることを示しています。
Colin Brock

OK、ブラウザがJSで開く新しいウィンドウで動作しているようです。しかし、私が必要としている現在のウィンドウでは動作しません。
jraede 2013年

1
私のテストは、物事が機能するかどうか、およびさまざまなレスポンシブ構成で表示されるかどうかをテストするため、各テストのウィンドウサイズを制御できるようにする必要があります。
jraede 2013年

回答:


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拡張機能」を、新しいChromeセッションを起動するたびにロードします。

ただし、ChromeDriverは、新しいChromeセッションを起動する代わりに、既存の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();
Ben Smith

8
すべてのテストで同じ解像度にしたい場合は、protractor.conf.jsファイルのonPrepare関数で上記を呼び出すことができます。
nwinkler 2014年

1
@BenSmithは理由はわかりませんが、browser.driver.manage().window().maximize();実際にはウィンドウを最大化しません。ウィンドウが少し大きくなっただけです。setSize()メソッドで幅と高さを指定するだけです
jetcom '10 / 07/14

1
@AlexandrosSpyropoulos:機能するはずですが、xvfbを馬鹿げた解像度で実行していないことを確認する必要があります。たとえば、デフォルトでは640x480です。
Tadas Sasnauskas 2014

1
@LeeGee回答が更新されました。
はRazvanフラウィウスパンダ

42

を使用してconfig.jsウィンドウサイズを設定することもできます。

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

二重ダッシュを削除する必要があります:args:['window-size = 800,600']
ezain

3
これは、答えに示されているように、二重ダッシュを使用すると予想どおりに機能します。
モンクピット2017年

これは、「-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 2017年

私の始まりは... 50,50か何か..ただ言う:)
Andrew

OSによって異なる場合があります。ここでは、Hyper-V内で実行されるWindows 8.1を示します
Andrew

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置き換えsetSize及びsetPosition

例えば、

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

3

Protractor.conf.jsファイルに次の設定を追加します

capabilities:{'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.