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

有没有什么方法可以使用 WebDriver (Selenium 2)和 C # 最大化浏览器窗口?

338038 次浏览

将此功能添加到 WebDriver 有一个突出的问题,可以在这里跟踪: 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);");
}

你可以在 WebDriver 中使用 硒仿真:

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

在 Python 中,有一个函数可以用来最大化窗口,它就是 window _  最大化()。我就是这么用的。希望这能帮上忙

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

如果你正在使用 Chrome 驱动程序,你可以设置这些功能

    var capabilities = new DesiredCapabilities();


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


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


new ChromeDriver(chromedriver_path, capabilities);

下面的 Selenium Java 代码片段对我很有用:

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

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

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

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

我用了这个溶液

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

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

这对 IE 和 Firefox 都适用。 Chrome 不适用。在 ChromeDriver 项目中提交了一个 bug。

与此同时,改进 chrome 的方法是实现 Joey V 和 Coder323的建议。

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 )

通过以下代码我可以最大化窗口,

((JavascriptExecutor) driver).executeScript("if(window.screen){
window.moveTo(0, 0);
window.resizeTo(window.screen.availWidth, window.screen.availHeight);
};");
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 # 一起使用,从而最大化浏览器。

测试步骤/场景:
1. 打开浏览器并导航到 < a href = “ https://link.testproject.io/bsg”rel = “ norefrer”> TestURL
2. 最大化浏览器

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

我觉得这样挺好的。

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

Java:

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

它可以在 IE,Mozilla,Chrome 上运行

对于 Webdriverjs (node.js) ,下面的代码最大化了 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');

我尝试了上面的许多答案,但都不管用。 我的 chrome 驱动程序版本是2.7,而我使用的 selenium-java vesion 是2.9。 官方文件建议使用:

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

以上也不工作。我检查了铬驱动程序 JsonWireProtocol: Http://code.google.com/p/selenium/wiki/jsonwireprotocol

Chrome diver 协议提供了一种最大化窗口的方法:

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

但是这个命令在 selenium-java 中不使用。这意味着您还可以发送命令给 chrome 自己。一旦我这样做,它的工作。

爪哇咖啡

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

巨蟒

driver.maximize_window()

露比

@driver.manage.window.maximize

或者

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

或者

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

对于 C # :

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

Java:

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

这个选择对我来说很好:

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”打开浏览器操作菜单,从选项中选择“ MAXIMIZE”,然后按“ ENTER”

Chrome 驱动已经支持:

Java:

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

我们已经观察到新驱动程序库的 bug。你可以使用稍微旧一点的罐子,它们能够处理新的浏览器版本。

主要的一般选择是:-

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

在狩猎旅行中试试这个:-

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

对于我来说,以上所有的解决方案在使用 Selenium Web Driver C # + Chrome 时都不起作用:

  • ResizeTo (1024,768) ; -我想使用整个屏幕
  • --start-maximized -被忽略
  • 由于需要一些扩展,而且我不能使用 Chrome 扩展,所以 driver.management () . window () . max () ; 无法工作

我设法让它工作使用 输入模拟器:

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

我也有同样的问题,但是这个问题可以通过使用下面的代码来解决。

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

您可以尝试使用此代码来最大化铬窗口。

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


WebDriver driver = new ChromeDriver(options);

为了 Chrome

ChromeOptions options = new ChromeOptions();
IWebDriver driver = new ChromeDriver(options);
driver.Manage().Window.Maximize();