Bagaimana cara memaksimalkan jendela browser di Selenium WebDriver (Selenium 2) menggunakan C #?

132

Apakah ada cara untuk memaksimalkan jendela browser menggunakan WebDriver (Selenium 2) dengan C #?

Surutnya
sumber
1
WebDriver ( code.google.com/p/selenium/?redir=1 ) pada dasarnya memungkinkan Anda menguji halaman web melalui kode.
Reflux
1
Selenium WebDriver adalah penerus Selenium RC
Ripon Al Wasim

Jawaban:

38

Ada masalah luar biasa untuk menambahkan fungsionalitas ini ke WebDriver, yang dapat dilacak di sini: http://code.google.com/p/selenium/issues/detail?id=174

Solusinya adalah menggunakan yang JavascriptExectorberikut ini:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
Dave Hunt
sumber
13
Dua hal: 1) Jika Anda peduli dengan apa yang terlihat, Anda mungkin ingin memindahkan jendela ke asal sebelum menjadikannya layar penuh. 2) Jika dimensi layar adalah variabel Anda bisa mendapatkannya pada saat dijalankan dengan screenobjek javascript . Mempertimbangkan poin-poin ini, javascript mungkin seharusnya:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz
4
Perhatikan bahwa ada masalah memindahkan window ke (0,0) di Firefox pada Mac. Tampaknya tidak memperhitungkan wilayah tajuknya dengan benar. Memindahkan jendela ke (0,1) tampaknya benar-benar memindahkannya ke (0,0), jadi satu bug membantu yang lain. Pada titik itu Anda dapat memaksimalkan jendela dengan benar.
nirvdrum
Seharusnya contoh JavascriptExecutor IJavaScriptExecutor
TuGordoBello
160

driver.Manage().Window.Maximize();

Ini berfungsi untuk IE dan Firefox. Chrome tidak berfungsi. Ada bug yang dikirimkan untuk ini di proyek ChromeDriver.

Sementara itu, solusi untuk chrome adalah mengimplementasikan apa yang disarankan Joey V. dan Coder323.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
bipinkarms
sumber
1
Cara ini untuk firefox adalah satu-satunya yang berfungsi, javascript tidak melakukan apa pun pada selenium 2.21
Sam Adamsh
6
Untuk case sensitive Java => driver.manage (). Window (). Maksimalkan ();
Janaaaa
AttributeError: 'WebDriver' object has no attribute 'Manage'
Pengguna
Baik. Saya akan mengucapkan terima kasih :) itu berfungsi pada chromedriver saya.
Xin
Saya menggunakan FF53 dengan Selenium WebDriver 3.3.0. driver.Manage (). Window.Maximize (); bekerja untuk saya
Ripon Al Wasim
37

Untuk IE dan Firefox:

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

Untuk Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
Luis
sumber
4
C # seperti ini. driver.Manage (). Window.Maximize ();
Chris Hawkes
driver.manage (). window (). maksimalkan (); bekerja untuk chrome juga
mosaad
Terima kasih Chris, C # membutuhkan metode huruf besar: ini. driver.Manage (). Window.Maximize ();
LA Guy 88
35

Jawa

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

Python

driver.maximize_window()

Rubi

@driver.manage.window.maximize

ATAU

max_width, max_height = driver.execute_script("return [window.screen.availWidth, window.screen.availHeight];")
@driver.manage.window.resize_to(max_width, max_height)

ATAU

target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size
Prashanth Sams
sumber
15

Anda dapat menggunakan sesuatu seperti ini (C #):

driver.Manage().Window.Size = new Size(1024, 768);
DrunkCoder
sumber
2
Sayangnya ini melempar dan pengecualian untuk ChromeDriver. Bekerja dengan baik untuk IE dan Firefox.
Bryan Allred
Menggunakan kode ini dengan Selenium C # akan berfungsi dengan baik sekarang karena ChromeDriver sekarang disediakan oleh Google (meskipun itu untuk selenium 3). Atau Anda dapat menggunakan fungsi maksimalkan atau cukup tambahkan argumen berikut melalui opsi: "--mulai dimaksimalkan"
user1841243
15

Langkah / skenario pengujian:
1. Buka browser dan navigasikan ke TestURL
2. Maksimalkan browser

Maksimalkan browser dengan C # (.NET):

driver.Manage().Window.Maximize();

Maksimalkan browser dengan Java:

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

Cara lain yang bisa dilakukan dengan Java:

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenResolution = new Dimension((int) 
                    toolkit.getScreenSize().getWidth(), (int) 
                    toolkit.getScreenSize().getHeight());

driver.manage().window().setSize(screenResolution);
Ripon Al Wasim
sumber
Ini gagal dalam kasus wadah docker krom dengan java.awt.HeadlessException kesalahan di sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:84). Apakah Anda mengalami masalah ini sebelumnya?
vikramvi
Saya mencoba dengan driver.Manage (). Window.Maximize (); di Selenium WebDriver C # pada FF dan itu bekerja dengan baik. Saya belum mencoba dengan Chrome.
Ripon Al Wasim
Ini bekerja untuk saya tetapi saya harus menambahkan driver.manage().window().setPosition(new Point(0,0));sebelum baris terakhir atau jendela tidak akan berada di posisi yang tepat.
swanhella
swanhella: Terima kasih untuk membagikan ini
Ripon Al Wasim
8

Jika Anda menggunakan Driver Chrome Anda dapat mengatur kemampuan

    var capabilities = new DesiredCapabilities();

    var switches = new List<string>
                       {
                           "--start-maximized"
                       };

    capabilities.SetCapability("chrome.switches", switches);

    new ChromeDriver(chromedriver_path, capabilities);
Joey V.
sumber
7

Cukup gunakan Window.Maximize()perintah

WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();  
iamsankalp89
sumber
6

Cuplikan kode Selenium Java berikut ini berfungsi untuk saya:

driver.manage().window().setPosition(new Point(0,0));
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Dimension dim = new Dimension((int) screenSize.getWidth(), (int) screenSize.getHeight());
driver.manage().window().setSize(dim);
KrishPrabakar
sumber
5

Untuk Jawa:

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

Ini akan bekerja di IE, Mozilla, Chrome

Ramaguru N
sumber
Bagaimana saya bisa mengatur yang sama untuk AndroidDriver ();
Karthick
5

Saya memiliki masalah yang sama, tetapi masalahnya dapat diselesaikan dengan menggunakan kode berikut.

driver.manage().window().fullscreen();
skarki
sumber
4

Untuk C #:

driver.Manage().Window.Maximize();

Untuk Jawa:

driver.manage().window().maximize();
Kumrun Nahar Keya
sumber
4

Kami telah mengamati bug dengan pustaka driver baru. Anda bisa menggunakan toples yang agak lama yang bisa menangani versi browser baru.

Opsi generik utama adalah: -

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

Anda juga dapat menggunakan opsi lain untuk memaksimalkan jendela browser.

Contoh:-

Tambahkan opsi di bawah ini dan meneruskannya ke driver: -

    chromeOptions.addArguments("--start-maximized");

Kode lengkap akan terlihat seperti di bawah ini: -

System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
driver = new ChromeDriver(chromeOptions);

ATAU

Toolkit toolkit = Toolkit.getDefaultToolkit();
int Width = (int) toolkit.getScreenSize().getWidth();
int Height = (int)toolkit.getScreenSize().getHeight();
//For Dimension class, Import following library "org.openqa.selenium.Dimension"  
driver.manage().window().setSize(new Dimension(Width,Height));
driver.get("https://google.com");

Coba ini di safari: -

JavascriptExecutor jse = (JavascriptExecutor)driver;
String screenWidth = jse.executeScript("return screen.availWidth").toString();
String screenHeight = jse.executeScript("return screen.availHeight").toString();
int intScreenWidth = Integer.parseInt(screenWidth);
int intScreenHeight = Integer.parseInt(screenHeight);
Dimension d = new Dimension(intScreenWidth, intScreenHeight);
driver.manage.window.setSize(d);
Shubham Jain
sumber
3
using System.Windows.Forms;
using System.Drawing;

public static void MaximizeBrowser(this IE myBrowser)
{
    myBrowser.SizeWindow(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}

Saya menggunakan kode Jim, tetapi sedikit dimodifikasi untuk digunakan dengan WatiN dan C # untuk memaksimalkan browser.

ParkerSuperstar
sumber
2

Anda dapat menggunakan Emulasi Selenium di WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Sergii Pozharov
sumber
1
Mereka tidak memiliki Selenium Emulation di versi C # webdriver. Setidaknya belum di 2.0a4 (hanya melihat mereka merilis versi baru belum memeriksanya). Namun kode javascript di atas berfungsi dengan baik.
Reflux
Dan itu juga tidak mendukung iPhoneDriver, misalnya
Iulius Curt
Sayangnya WebDriverBackedSelenium.windowMaximize () tidak berfungsi di Firefox 7 atau Chrome 14 (meskipun itu berfungsi di IE8). Di belakang layar itu mengeluarkan perintah window.resize () Javascript, tetapi kedua browser ini mengabaikannya. Solusi @ joey-v bekerja untuk Chrome. Dan Luke Inman-Semerau memposting solusi di sini ;
Andrew Newdigate
2

Saya menggunakan solusi ini

            OpenQA.Selenium.Chrome.ChromeOptions chromeoptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            chromeoptions.AddArgument("--start-maximized");
            OpenQA.Selenium.Chrome.ChromeDriver chrome = new OpenQA.Selenium.Chrome.ChromeDriver(chromeoptions);
Coder323
sumber
1

Ada fungsi yang dapat Anda gunakan untuk memaksimalkan jendela dengan Python yaitu window_maximize (). Dan ini adalah bagaimana saya menggunakannya. Semoga ini membantu -

from selenium import selenium
sel = selenium('localhost', 4444, '*firefox', 'http://10.77.21.67/')
sel.start()
sel.open('/')
sel.wait_for_page_to_load(60000)
#sel.window_focus()
sel.window_maximize()
png = sel.capture_screenshot_to_string()
f = open('screenshot.png', 'wb')
f.write(png.decode('base64'))
f.close()
sel.stop()
fixxxer
sumber
1

Driver klien C #:

driver = new FirefoxDriver(firefoxProfile);
driver.Manage().Window.Size = new System.Drawing.Size(System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width+10, System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height+10);

===> juga menambahkan referensi ke .NET assembly "System.Windows.Forms"

... satu-satunya masalah adalah tidak diposisikan dengan benar
... beri komentar jika Anda dapat memperbaikinya

MacGyver
sumber
1

Inilah yang bekerja untuk saya di C #, firefoxDriver bersifat global ke kelas:

dalam usings:

using System.Drawing;
using System.Windows.Forms;

dalam kode:

this.firefoxDriver = new FirefoxDriver();
this.firefoxDriver.Manage().Window.Position = new Point(0, 0);
this.firefoxDriver.Manage().Window.Size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
Jim Thompson
sumber
1

Untuk Webdriverjs (node.js), berikut ini memaksimalkan jendela chrome.

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).build();
driver.manage().window().maximize();
driver.get('hxxp://localhost:8888');
Anup
sumber
1

Opsi ini baik untuk saya:

ChromeOptions options = new ChromeOptions();
options.addArguments("start-fullscreen");

Opsi ini berfungsi pada semua OS.

Sagar007
sumber
1

Baris kode di bawah ini akan memaksimalkan IE, Chrome dan Mozilla

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

Baris kode di atas dan solusi lain yang disebutkan dalam pos tidak berfungsi untuk browser NodeWebKit, jadi sebagai solusi saya harus menggunakan kode C # asli seperti yang disebutkan di bawah ini:

public static void MaximiseNWKBrowser(IWebDriver d)
        {
            var body = UICommon.GetElement(By.TagName("body"), d);
            body.Click();
            string alt = "%";
            string space = " ";
            string down = "{DOWN}";
            string enter = "{ENTER}";
            SendKeys.SendWait(alt + space);
            for(var i = 1; i <= 6; i++)
            {
                SendKeys.SendWait(down);
            }
            SendKeys.SendWait(enter);            
        }

Jadi solusi ini pada dasarnya menggunakan "ALT + SPACE" untuk memunculkan menu tindakan browser untuk memilih "MAKSIMAL" dari opsi dan tekan "ENTER"

sederhana
sumber
0

Melalui kode di bawah ini saya dapat memaksimalkan jendela,

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");
Rajagopal
sumber
0

Ini bekerja dengan baik untuk saya.

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)
suresh.g
sumber
0

Saya mencoba banyak jawaban di atas, tetapi tidak ada yang berhasil. Versi driver chrome saya adalah 2.7 dan Iam menggunakan vesion selenium-java 2.9.0. Dokumen resmi menyarankan menggunakan:

var capabilities = new DesiredCapabilities();
var switches = new List<string>
                       {
                           "--start-maximized"
                       };
capabilities.SetCapability("chrome.switches", switches);    
new ChromeDriver(chromedriver_path, capabilities);

Di atas juga tidak berfungsi. Saya memeriksa driver chrome JsonWireProtocol: http://code.google.com/p/selenium/wiki/JsonWireProtocol

Protokol penyelam chrome menyediakan metode untuk memaksimalkan jendela:

/session/:sessionId/window/:windowHandle/maximize,

tetapi perintah ini tidak digunakan dalam selenium-java. Ini berarti Anda juga mengirim perintah ke chrome sendiri. Setelah saya melakukan ini, ini berhasil.

ksatria zhou
sumber
0

Driver Chrome sudah mendukung:

Jawa:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Viktor Chmel
sumber
0

Bagi saya, tidak ada solusi di atas yang berfungsi saat bekerja dengan Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - Saya ingin menggunakan seluruh layar
  • --start-maximized - itu diabaikan
  • driver.manage (). window (). maksimalkan (); - tidak berfungsi karena memerlukan ekstensi dan saya tidak diizinkan menggunakan ekstensi Chrome

Saya berhasil membuatnya bekerja menggunakan InputSimulator :

var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
Alexei
sumber
0

Anda dapat mencoba dengan kode ini untuk memaksimalkan jendela chrome.

ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");

WebDriver driver = new ChromeDriver(options);
Houssin Boulla
sumber
Meskipun dapat diterima untuk memberikan jawaban hanya kode, seringkali lebih bermanfaat bagi komunitas jika Anda juga dapat memberikan penjelasan kode dan membantu orang-orang memahami mengapa hal itu mengatasi masalah. Itu sering mengurangi jumlah pertanyaan lanjutan, dan benar-benar dapat membantu pengembang baru memahami konsep yang mendasarinya. Itu sangat penting di sini, di mana sudah ada 27 jawaban lain; ada baiknya menyebut apa yang membuat pendekatan Anda berbeda dari jawaban yang ada. Maukah Anda memperbarui pertanyaan Anda dengan detail tambahan?
Jeremy Caney