Làm cách nào để tối đa hóa cửa sổ trình duyệt trong Selenium WebDriver (Selenium 2) bằng C #?


Câu trả lời:


39

Có một vấn đề nổi bật để thêm chức năng này vào WebDriver, có thể được theo dõi tại đây: http://code.google.com.vn/p/selenium/issues/detail?id=174

Một cách giải quyết khác là sử dụng JavascriptExectornhư sau:

public void resizeTest() {
    driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}

13
Hai điều: 1) Nếu bạn quan tâm những gì có thể nhìn thấy, có lẽ bạn muốn di chuyển cửa sổ về nguồn gốc trước khi làm cho toàn màn hình. 2) Nếu kích thước màn hình là biến, bạn có thể lấy chúng trong thời gian chạy với screenđối tượng javascript . Cân nhắc những điểm này có thể là javascript:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
Guildencrantz

4
Lưu ý rằng có một vấn đề di chuyển cửa sổ đến (0,0) trong Firefox trên Mac. Nó dường như không giải thích cho khu vực tiêu đề của nó đúng. Tuy nhiên, việc di chuyển cửa sổ đến (0,1) dường như thực sự chuyển nó sang (0,0), vì vậy một lỗi sẽ giúp một lỗi khác. Tại thời điểm đó bạn có thể tối đa hóa cửa sổ đúng cách.
nirvdrum

Nên là phiên bản JavascriptExecutor IJavaScriptExecutor
TuGordoBello

159

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

Điều này hoạt động cho IE và Firefox. Chrome không hoạt động. Có một lỗi được gửi cho dự án ChromeDriver này.

Trong khi đó, xung quanh cho chrome là để thực hiện những gì Joey V. và Coder323 đề xuất.

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);

1
Cách này cho firefox là cách duy nhất hoạt động, javascript không thực hiện bất kỳ thứ gì trên selenium 2.21
Sam Adamsh

6
Đối với Java phân biệt chữ hoa chữ thường => driver.manage (). Window (). Maximum ();
Janaaaa

AttributeError: 'WebDriver' object has no attribute 'Manage'
Người dùng

Tốt. Tôi sẽ nói cảm ơn :) nó không hoạt động trên chromedriver của tôi.
Xin

Tôi đang sử dụng FF53 với Selenium WebDriver 3.3.0. driver.Manage (). Window.Maxizing (); làm việc cho tôi
Ripon Al Wasim

36

Đối với IE và Firefox:

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

Đối với Chrome:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )

4
C # nó như thế này. driver.Manage (). Window.Maxizing ();
Chris Hawkes

driver.manage (). window (). Maximum (); cũng hoạt động cho chrome
khảm vào

Cảm ơn Chris, C # cần các phương thức viết hoa: này. driver.Manage (). Window.Maxizing ();
LA Guy 88

35

Java

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

Con trăn

driver.maximize_window()

Hồng ngọc

@driver.manage.window.maximize

HOẶC LÀ

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

HOẶC LÀ

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

15

Bạn có thể sử dụng một cái gì đó như thế này (C #):

driver.Manage().Window.Size = new Size(1024, 768);

2
Thật không may, điều này ném và ngoại lệ cho ChromeDriver. Hoạt động tốt cho IE và Firefox mặc dù.
Bryan Allred

Sử dụng mã này với Selenium C # sẽ hoạt động tốt ngay bây giờ vì ChromeDriver hiện được cung cấp bởi Google (mặc dù đó là cho selenium 3). Ngoài ra, bạn có thể sử dụng chức năng tối đa hóa hoặc chỉ cần thêm đối số sau thông qua các tùy chọn: "- bắt đầu tối đa hóa"
user1841243

15

Bước / kịch bản kiểm tra:
1. Mở trình duyệt và điều hướng đến TestURL
2. Tối đa hóa trình duyệt

Tối đa hóa trình duyệt với C # (.NET):

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

Tối đa hóa trình duyệt với Java:

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

Một cách khác để làm với Java:

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

driver.manage().window().setSize(screenResolution);

Điều này không thành công trong trường hợp bộ chứa docker chrome có lỗi java.awt.HeadlessException tại sun.awt.HeadlessToolkit.getScreenSize (HeadlessToolkit.java:284). Bạn đã gặp vấn đề này trước đây?
vikramvi

Tôi đã thử với driver.Manage (). Window.Maxizes (); trong Selenium WebDriver C # trên FF và nó hoạt động tốt. Tôi chưa thử với Chrome.
Ripon Al Wasim

Điều này làm việc cho tôi nhưng tôi phải thêm driver.manage().window().setPosition(new Point(0,0));trước dòng cuối cùng hoặc cửa sổ sẽ không ở đúng vị trí.
swanhella

swanhella: Cảm ơn đã chia sẻ điều này
Ripon Al Wasim

8

Nếu bạn đang sử dụng Trình điều khiển Chrome, bạn có thể đặt các khả năng

    var capabilities = new DesiredCapabilities();

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

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

    new ChromeDriver(chromedriver_path, capabilities);

7

Đơn giản chỉ cần sử dụng Window.Maximize()lệnh

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

6

Đoạn mã Selenium Java sau đây hoạt động với tôi:

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

5

Đối với Java:

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

Nó sẽ hoạt động trong IE, Mozilla, Chrome


Làm cách nào tôi có thể đặt tương tự cho AndroidDriver ();
Karthick

5

Tôi đã có cùng một vấn đề, nhưng vấn đề có thể được giải quyết bằng cách sử dụng mã sau đây.

driver.manage().window().fullscreen();

4

Đối với C #:

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

Đối với Java:

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

4

Chúng tôi đã quan sát lỗi với các thư viện trình điều khiển mới. Bạn có thể sử dụng các lọ hơi cũ có thể xử lý các phiên bản trình duyệt mới.

Tùy chọn chung chính là: -

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

Bạn cũng có thể sử dụng tùy chọn khác để tối đa hóa cửa sổ trình duyệt.

Thí dụ:-

Thêm tùy chọn bên dưới và chuyển nó cho trình điều khiển: -

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

Mã đầy đủ sẽ như dưới đây: -

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

HOẶC LÀ

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");

Hãy thử điều này trên 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);

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

Tôi đã sử dụng mã của Jim, nhưng được sửa đổi một chút để sử dụng với WatiN và C # để tối đa hóa trình duyệt.


2

Bạn có thể sử dụng Mô phỏng Selen trong WebDriver:

selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();

1
Họ không có Thi đua Selenium trong phiên bản C # của webdo. Ít nhất là chưa có trong 2.0a4 (chỉ cần nhìn thấy họ đã phát hành một phiên bản mới chưa kiểm tra nó). Tuy nhiên, mã javascript trên hoạt động rất tốt.
Trào ngược

Và nó cũng không hỗ trợ iPhoneDriver, ví dụ
Iulius Curt

Thật không may, WebDriverBackedSelenium.windowMaxizes () không hoạt động trong Firefox 7 hoặc Chrome 14 (mặc dù nó hoạt động trong IE8). Đằng sau hậu trường, nó đưa ra lệnh Javascript window.resize (), nhưng cả hai trình duyệt này đều bỏ qua nó. Giải pháp của @ joey-v hoạt động cho Chrome. Và Luke Inman-Semerau đã đăng một giải pháp ở đây ;
Andrew Newdigate

2

Tôi đã sử dụng giải pháp này

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

1

Có một hàm mà bạn có thể sử dụng để tối đa hóa cửa sổ trong Python đó là window_maxizing (). Và đây là cách tôi đang sử dụng nó. Hy vọng điều này sẽ giúp -

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()

1

Trình điều khiển máy khách 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);

===> cũng thêm một tham chiếu đến cụm .NET "System.Windows.Forms"

... vấn đề duy nhất là nó không được đặt đúng vị trí
... vui lòng bình luận nếu bạn có thể sửa lỗi này


1

Đây là những gì làm việc cho tôi trong C #, firefoxDriver là toàn cầu cho lớp:

trong các ứng dụng:

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

trong mã:

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

1

Đối với Webdojs (node.js), cửa sổ chrome tối đa hóa sau đây.

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

1

Tùy chọn này là tốt cho tôi:

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

Tùy chọn này hoạt động trên tất cả các hệ điều hành.


1

Dòng mã dưới đây sẽ tối đa hóa IE, Chrome và Mozilla

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

Dòng mã trên và các cách giải quyết khác được đề cập trong bài đăng không hoạt động đối với trình duyệt NodeWebKit, vì vậy, một cách giải quyết khác tôi phải sử dụng mã C # gốc như được đề cập dưới đây:

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

Vì vậy, cách giải quyết này về cơ bản sử dụng "ALT + KHÔNG GIAN" để hiển thị menu hành động của trình duyệt để chọn "TỐI ĐA" từ các tùy chọn và nhấn "ENTER"


0

Thông qua đoạn mã dưới đây tôi có thể tối đa hóa cửa sổ,

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

0

Điều này đang làm việc tốt cho tôi.

Capybara.current_session.driver.browser.manage.window.resize_to(1800, 1000)

0

Tôi đã thử nhiều câu trả lời ở trên, nhưng không có câu nào hoạt động tốt. Phiên bản trình điều khiển chrome của tôi là 2.7 và Iam sử dụng selenium-java vesion là 2.9.0. Tài liệu chính thức đề nghị sử dụng:

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

Ở trên cũng không hoạt động. Tôi đã kiểm tra trình điều khiển chrome JsonWireProtocol: http://code.google.com.vn/p/selenium/wiki/JsonWireProtocol

Giao thức chuyển hướng chrome cung cấp một phương thức để tối đa hóa cửa sổ:

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

nhưng lệnh này không được sử dụng trong selenium-java. Điều này có nghĩa là bạn cũng gửi lệnh để chrome chính mình. Một khi tôi đã làm điều này nó hoạt động.


0

Trình điều khiển Chrome đã hỗ trợ:

Java:

webDriver = new ChromeDriver();
webDriver.manage().window().maximize();

0

Đối với tôi, không có giải pháp nào ở trên hoạt động khi làm việc với Selenium Web Driver C # + Chrome:

  • window.resizeTo (1024, 768); - Tôi muốn sử dụng toàn bộ màn hình
  • --start-maximized - nó bị bỏ qua
  • driver.manage (). window (). Maximum (); - không hoạt động vì nó yêu cầu một số tiện ích mở rộng và tôi không được phép sử dụng tiện ích mở rộng Chrome

Tôi đã quản lý để làm cho nó hoạt động bằng InputSimulator :

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

0

Bạn có thể thử với mã này để tối đa hóa cửa sổ chrome.

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

WebDriver driver = new ChromeDriver(options);

Mặc dù có thể chấp nhận cung cấp câu trả lời chỉ có mã, nhưng nó thường hữu ích hơn cho cộng đồng nếu bạn cũng có thể cung cấp giải thích về mã và giúp mọi người hiểu lý do giải quyết vấn đề. Điều đó thường làm giảm số lượng câu hỏi tiếp theo và thực sự có thể giúp các nhà phát triển mới hiểu các khái niệm cơ bản. Điều đó đặc biệt quan trọng ở đây, nơi đã có 27 câu trả lời khác; thật đáng để gọi những gì làm cho cách tiếp cận của bạn khác với các câu trả lời hiện có. Bạn có phiền cập nhật câu hỏi của bạn với chi tiết bổ sung?
Jeremy Caney
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.