如何使用C#最大化Selenium WebDriver(Selenium 2)中的浏览器窗口?

有什么办法使用WebDriver(Selenium 2)与C#最大化浏览器窗口?

在WebDriver中添加此function存在一个突出问题,可以在此处进行跟踪: http : //code.google.com/p/selenium/issues/detail? id=174

解决方法是使用JavascriptExector ,如下所示:

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

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

这适用于IE和Firefox。 Chrome不起作用。 在ChromeDriver项目上有一个bug提交。

与此同时,镀铬的解决scheme是实施Joey V.和Coder323提出的build议。

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

对于IE和Firefox:

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

对于Chrome:

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

你可以使用这样的东西(C#):

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

使用C#(.NET)最大化浏览器:

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

使用Java最大化浏览器:

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

使用Java的另一种方法是:

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

Java的

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

python

 driver.maximize_window() 

ruby

 @driver.manage.window.maximize 

如果您使用Chrome驱动程序,则可以设置function

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

这对我工作:

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

对于Java:

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

它将在IE,Mozilla,Chrome中运行

对于C#:

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

对于Java:

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

您可以在WebDriver中使用Selenium仿真 :

 selenium = new WebDriverBackedSelenium(driver,url); selenium.windowMaximize(); 
 using System.Windows.Forms; using System.Drawing; public static void MaximizeBrowser(this IE myBrowser) { myBrowser.SizeWindow(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height); } 

我使用了Jim的代码,但稍微修改了WatiN和C#以最大化浏览器。

有一个函数可以用来最大化window_maximize()中的Python窗口。 这就是我如何使用它。希望这有助于 –

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

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

===>也添加一个引用到.NET程序集“System.Windows.Forms”

唯一的问题是它的位置不正确
…请评论,如果你可以纠正这一点

下面是在C#中为我工作的,firefoxDriver是全局的类:

在使用中:

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

在代码中:

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

我用这个解决scheme

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

对于Webdriverjs(node.js),下面最大化了铬窗口。

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

这个选项对我来说很好:

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

该选项适用于所有操作系统。

下面的代码行将最大限度地利用IE,Chrome和Mozilla

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

上面提到的代码行和其他解决方法不适用于NodeWebKit浏览器,所以作为一个解决方法,我必须使用本地C#代码,如下所述:

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

所以这个解决方法基本上使用“ALT + SPACE”来调出浏览器的动作菜单,从选项中select“MAXIMIZE”并按下“ENTER”

我们观察到新驱动程序库的错误。 您可以使用能够处理新浏览器版本的稍旧的jar子。

主要的通用选项是: –

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

您也可以使用其他选项来最大化浏览器窗口。

例:-

添加下面的选项,并将其传递给驱动程序: –

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

完整的代码如下所示:

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

要么

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

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

只需使用Window.Maximize()命令

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

通过下面的代码,我能够最大化的窗口,

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

这对我来说工作得很好。

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

我尝试了上面的许多答案,但没有一个很好。 我的chrome驱动程序版本是2.7,使用selenium-java vesion的Iam是2.9.0。 官方文件build议使用:

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

以上也不起作用。 我检查了Chrome驱动程序JsonWireProtocol : http : //code.google.com/p/selenium/wiki/JsonWireProtocol

铬潜水员协议提供了一种方法来最大化窗口:

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

但是这个命令在selenium-java中没有使用。 这意味着你也可以发送命令给自己chrome。 一旦我做到了这一点的作品。

Chrome驱动程序已经支持:

Java的:

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