Cara mengatur ukuran jendela browser default di Protractor / WebdriverJS


107

Untuk beberapa alasan ketika saya menjalankan pengujian saya di tempat kerja, browser dimaksimalkan, tetapi ketika saya menjalankannya di rumah, itu hanya membuka jendela browser dengan lebar sekitar 50%. Hal ini menyebabkan beberapa perbedaan dengan menggulir ke bawah, dll, jadi saya idealnya ingin itu membuka jendela browser dengan ukuran yang sama di setiap mesin tempat pengujian dijalankan. Apa cara terbaik untuk melakukannya? (Saya telah menemukan beberapa jawaban untuk bahasa lain tetapi belum dapat menyesuaikannya dengan javascript)

Menambahkan

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

tidak melakukan apa-apa, (tampaknya window.moveTodan window.resizeTotidak didukung oleh chrome).


Saya tidak punya jawaban untuk Anda saat ini, tetapi saya dapat memberi tahu Anda window.moveTodan window.scrollTopasti didukung oleh Chrome.
Colin Brock

scrollTo bekerja. Tapi yang lain tidak, setidaknya tidak dari apa yang bisa saya ceritakan. Coba ketikkan di konsol ... tidak melakukan apa pun.
jraede

Beresiko keluar dari topik, berikut ini biola yang menggambarkan window.moveTodan window.resizeTo. Ini berfungsi dengan baik untuk saya di Chrome. Saya tidak tahu apakah Anda dapat mengubah ukuran jendela saat ini dari konsol di Chrome, tetapi fakta bahwa resizeTometode ini tersedia di sana menunjukkan bahwa Chrome mendukungnya.
Colin Brock

Ok, tampaknya bekerja untuk jendela baru yang membuka browser dengan JS. Tapi tidak bekerja dengan jendela saat ini, yang saya butuhkan.
jraede

1
Pengujian saya adalah untuk mengetahui apakah semuanya berfungsi atau tidak dan terlihat dalam konfigurasi responsif yang berbeda, jadi saya harus dapat mengontrol ukuran jendela untuk setiap pengujian.
jraede

Jawaban:


192

Anda dapat mengatur ukuran browser default dengan menjalankan:

var width = 800;
var height = 600;
browser.driver.manage().window().setSize(width, height);

Untuk memaksimalkan jendela browser, jalankan:

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

Untuk mengatur run posisi:

var x = 150;
var y = 100;
browser.driver.manage().window().setPosition(x, y);

Jika Anda mendapatkan kesalahan:

WebDriverError: unknown error: operation is unsupported with remote debugging

Operasi tidak didukung saat menggunakan debugging jarak jauh Beberapa perintah WebDriver (misalnya mengubah ukuran jendela browser) memerlukan ekstensi Chrome untuk dimuat ke browser. ChromeDriver biasanya memuat "ekstensi otomatisasi" ini setiap kali sesi Chrome baru diluncurkan.

Namun ChromeDriver dapat diinstruksikan untuk menyambung ke sesi Chrome yang sudah ada alih-alih meluncurkan yang baru. Ini dilakukan dengan menggunakan 'debuggerAddress' di objek Capabilities (alias ChromeOptions). Karena ekstensi otomatisasi hanya dimuat saat memulai, ada beberapa perintah yang tidak didukung ChromeDriver saat bekerja dengan sesi yang ada melalui proses debug jarak jauh.

Jika Anda melihat kesalahan "operasi tidak didukung saat menggunakan debugging jarak jauh", coba tulis ulang pengujian sehingga sesi Chrome baru diluncurkan. Ini bisa dilakukan dengan menghapus 'debuggerAddress' dari objek Capabilities.

Sumber: https://sites.google.com/a/chromium.org/chromedriver/help/operation-not-supported-when-using-remote-debugging


10
Dimungkinkan juga untuk memaksimalkan browser ke ukuran layar penuh menggunakanbrowser.driver.manage().window().maximize();
Ben Smith

8
Jika Anda ingin memiliki resolusi yang sama untuk semua pengujian Anda, Anda dapat memanggil di atas dalam fungsi protractor.conf.jsfile Anda onPrepare.
nwinkler

1
@BenSmith tidak yakin mengapa, tetapi browser.driver.manage().window().maximize();tidak benar-benar memaksimalkan jendela untuk saya. Saya hanya mendapatkan jendela yang sedikit lebih besar. Saya baru saja menentukan lebar dan tinggi dengan setSize()metode
jetcom

1
@AlexandrosSpyropoulos: seharusnya berfungsi tetapi Anda harus memastikan bahwa Anda tidak menjalankan xvfb dalam beberapa resolusi konyol. Misalnya secara default adalah 640x480.
Tadas Sasnauskas

1
@LeeGee Jawaban yang diperbarui.
Răzvan Flavius ​​Panda

42

Anda juga dapat menggunakan Anda config.jsuntuk mengatur ukuran jendela:

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

Anda perlu menghapus tanda hubung ganda: args: ['window-size = 800.600']
ezain

3
Ini berfungsi seperti yang diharapkan untuk saya DENGAN tanda hubung ganda seperti yang ditunjukkan pada jawaban.
Monkpit

Ini juga menyetel ukuran browser saat menjalankan skrip e2e dengan args '--headless'. Yang berguna jika menu dialihkan ke tampilan seluler.
tony2tones

28

Jika metode yang disukai:

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

tidak berfungsi untuk Anda (misalnya menjalankan pengujian Busur Derajat di Xvfb), maka Anda juga dapat memaksimalkan jendela dengan cara ini (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);
        });
    });
},

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

ide terbaik dengan resolusi otomatis dapatkan maksimal, tetapi Anda lupa setPosition (0, 0) sehingga akan tepat di atas layar
Andrew

Hm, browser saya sudah mulai di posisi 0-0. Tapi bagus jika seseorang membutuhkannya.
Martin Sznapka

milikku dimulai pada ... 50,50 atau sesuatu .. hanya mengatakan :)
Andrew

itu mungkin tergantung pada OS, ini dia Windows 8.1 berjalan di dalam Hyper-V
Andrew

16

Saya hanya menambahkan kode di bawah ini di file protractor.conf.js saya dan itu berfungsi dengan baik.

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

Apa tujuan setTimeout dan executionScript dalam jawaban Anda? Saya berjuang untuk menemukan praktik terbaik di dokumen busur derajat ...

Menurut pendapat saya, menggunakan maksimalkan () secara langsung adalah ide yang buruk dan seharusnya bukan metode yang disukai, karena tidak akan menyetel ukuran yang sama pada setiap mesin tempat pengujian dijalankan, dan dapat merusak perilaku responsif.


4

Di Selenium 4 (Busur derajat 6), setRectmenggantikan setSizedansetPosition

Sebagai contoh,

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

3

Dalam file Protractor.conf.js tambahkan konfigurasi berikut

kemampuan: {'browserName': 'chrome', chromeOptions: {args: ['start-maximized']}}


0

Ubah file config.js Anda seperti di bawah ini.

 onPrepare: function () {
      browser.driver.manage().window().setSize(1280, 1024); //width , height

       }, 
 capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [ "--start-maximized" ] // to start browser as maximixed 
         }
    },

-1

Tambahkan kode di bawah ini, ini akan memaksimalkan jendela browser

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

Selamat datang di stackoverflow. Sudah ada jawaban yang memberikan informasi ini dengan lebih banyak penjelasan. Harap pastikan jawaban Anda menambahkan sesuatu yang baru pada pertanyaan tersebut.
Simon.SA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.