109

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

(他の言語の答えはいくつか見つかりましたが、JavaScript に適応させることはできませんでした)

追加する

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

何もしません (明らかwindow.moveToに、window.resizeToGoogle Chrome ではサポートされていません)。

4

9 に答える 9

199

次のコマンドを実行して、デフォルトのブラウザ サイズを設定できます。

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 セッションに接続するように指示できます。これは、Capabilities (別名 ChromeOptions) オブジェクトで「debuggerAddress」を使用して行われます。自動化拡張機能は起動時にのみ読み込まれるため、リモート デバッグを介して既存のセッションを操作する場合、ChromeDriver がサポートしないコマンドがいくつかあります。

「リモート デバッグを使用している場合、操作はサポートされていません」というエラーが表示される場合は、新しい Chrome セッションを起動するようにテストを書き直してみてください。これは、Capabilities オブジェクトから「debuggerAddress」を削除することで実行できます。

出典:リモートデバッグ使用時の動作未対応

于 2013-11-25T16:54:04.303 に答える
43

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

// config.js
specs: [
    ...
],
capabilities: {
    browserName: 'chrome',
    chromeOptions: {
        args: ['--window-size=800,600'] // THIS!
    }
}
// ....
于 2016-10-27T12:17:42.580 に答える
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]);
            });
        });
    }
};
于 2015-09-24T16:18:50.743 に答える
17

以下のコードをprotractor.conf.jsファイルに追加しただけで、問題なく動作しました。

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

setTimeout と executeScript は、回答でどのような目的に役立ちますか? 分度器のドキュメントでベストプラクティスを見つけるのに苦労しています...

私の考えでは、 Maximize() を直接使用することは悪い考えであり、推奨される方法ではありません。テストが実行されるすべてのマシンで同じサイズが設定されず、応答性の高い動作が損なわれる可能性があるためです。

于 2016-03-31T16:35:57.703 に答える