Gibt es eine Möglichkeit, das Browserfenster mit WebDriver (Selenium 2) mit C # zu maximieren?
Gibt es eine Möglichkeit, das Browserfenster mit WebDriver (Selenium 2) mit C # zu maximieren?
Antworten:
Es gibt ein offenes Problem beim Hinzufügen dieser Funktionalität zu WebDriver, das hier verfolgt werden kann: http://code.google.com/p/selenium/issues/detail?id=174
Eine Problemumgehung wäre, JavascriptExector
Folgendes zu verwenden:
public void resizeTest() {
driver.Navigate().GoToUrl("http://www.example.com/");
((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);");
}
screen
Objekt abrufen . Unter Berücksichtigung dieser Punkte sollte das Javascript wahrscheinlich sein:window.moveTo(0,0); window.resizeTo(screen.width, screen.height);
driver.Manage().Window.Maximize();
Dies funktioniert für IE und Firefox. Chrome funktioniert nicht. Hierfür wurde im ChromeDriver-Projekt ein Fehler gemeldet.
In der Zwischenzeit muss das Chrom umgesetzt werden, was Joey V. und Coder323 vorgeschlagen haben.
ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");
driver = new ChromeDriver(options);
AttributeError: 'WebDriver' object has no attribute 'Manage'
Für IE und Firefox:
driver.manage().window().maximize();
Für Chrome:
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver( options )
driver.manage().window().maximize();
driver.maximize_window()
@driver.manage.window.maximize
ODER
max_width, max_height = driver.execute_script("return [window.screen.availWidth, window.screen.availHeight];")
@driver.manage.window.resize_to(max_width, max_height)
ODER
target_size = Selenium::WebDriver::Dimension.new(1600, 1268)
@driver.manage.window.size = target_size
Sie können so etwas verwenden (C #):
driver.Manage().Window.Size = new Size(1024, 768);
Testschritt / Szenario:
1. Öffnen Sie einen Browser und navigieren Sie zu TestURL.
2. Maximieren Sie den Browser
Maximieren Sie den Browser mit C # (.NET):
driver.Manage().Window.Maximize();
Maximieren Sie den Browser mit Java:
driver.manage().window().maximize();
Ein anderer Weg, um mit Java zu tun:
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenResolution = new Dimension((int)
toolkit.getScreenSize().getWidth(), (int)
toolkit.getScreenSize().getHeight());
driver.manage().window().setSize(screenResolution);
driver.manage().window().setPosition(new Point(0,0));
bevor die letzte Zeile oder das Fenster nicht an der richtigen Position war.
Wenn Sie den Chrome-Treiber verwenden, können Sie die Funktionen festlegen
var capabilities = new DesiredCapabilities();
var switches = new List<string>
{
"--start-maximized"
};
capabilities.SetCapability("chrome.switches", switches);
new ChromeDriver(chromedriver_path, capabilities);
Verwenden Sie einfach den Window.Maximize()
Befehl
WebDriver driver= new ChromeDriver()
driver.Manage().Window.Maximize();
Das folgende Selenium Java-Codefragment hat für mich funktioniert:
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);
Für Java:
driver.manage().window().maximize();
Es wird in IE, Mozilla, Chrome funktionieren
Für C #:
driver.Manage().Window.Maximize();
Für Java:
driver.manage().window().maximize();
Wir haben einen Fehler mit neuen Treiberbibliotheken festgestellt. Sie können leicht alte Gläser verwenden, die neue Browserversionen verarbeiten können.
Die wichtigste generische Option ist: -
driver.manage().window().maximize();
Sie können auch eine andere Option zum Maximieren des Browserfensters verwenden.
Beispiel:-
Fügen Sie die folgende Option hinzu und übergeben Sie sie an den Treiber: -
chromeOptions.addArguments("--start-maximized");
Der vollständige Code sieht wie folgt aus: -
System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
driver = new ChromeDriver(chromeOptions);
ODER
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");
Versuchen Sie dies auf einer 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);
using System.Windows.Forms;
using System.Drawing;
public static void MaximizeBrowser(this IE myBrowser)
{
myBrowser.SizeWindow(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
}
Ich habe Jims Code verwendet, aber für die Verwendung mit WatiN und C # leicht modifiziert, um den Browser zu maximieren.
Sie können die Selenium-Emulation in WebDriver verwenden:
selenium = new WebDriverBackedSelenium(driver,url);
selenium.windowMaximize();
Es gibt eine Funktion, mit der Sie das Fenster in Python maximieren können: window_maximize (). Und so benutze ich es. Hoffentlich hilft das -
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 # -Clienttreiber:
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);
===> Fügen Sie auch einen Verweis auf die .NET-Assembly "System.Windows.Forms" hinzu.
... das einzige Problem ist, dass es nicht richtig positioniert ist
... bitte kommentieren Sie, ob Sie dies korrigieren können
Folgendes hat in C # für mich funktioniert: FirefoxDriver ist für die Klasse global:
in den Verwendungen:
using System.Drawing;
using System.Windows.Forms;
im Code:
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);
Für Webdriverjs (node.js) maximiert das Folgende das Chrome-Fenster.
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).build();
driver.manage().window().maximize();
driver.get('hxxp://localhost:8888');
Die folgende Codezeile würde IE, Chrome und Mozilla maximieren
driver.manage().window().maximize();
Die obige Codezeile und andere im Beitrag erwähnte Problemumgehungen funktionierten nicht für den NodeWebKit-Browser. Als Problemumgehung musste ich nativen C # -Code verwenden, wie unten erwähnt:
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);
}
Diese Problemumgehung verwendet also grundsätzlich "ALT + LEERTASTE", um das Browser-Aktionsmenü aufzurufen und "MAXIMIEREN" aus den Optionen auszuwählen und "EINGABE" zu drücken.
Ich habe viele der obigen Antworten ausprobiert, aber keine funktioniert gut. Meine Chrome-Treiberversion ist 2.7 und ich verwende Selen-Java-Version 2.9.0. Das offizielle Dokument schlägt vor, Folgendes zu verwenden:
var capabilities = new DesiredCapabilities();
var switches = new List<string>
{
"--start-maximized"
};
capabilities.SetCapability("chrome.switches", switches);
new ChromeDriver(chromedriver_path, capabilities);
Das obige funktioniert auch nicht. Ich habe den Chrome-Treiber überprüft JsonWireProtocol
:
http://code.google.com/p/selenium/wiki/JsonWireProtocol
Das Chrome Diver-Protokoll bietet eine Methode zur Maximierung des Fensters:
/session/:sessionId/window/:windowHandle/maximize,
Dieser Befehl wird jedoch in Selen-Java nicht verwendet. Dies bedeutet, dass Sie den Befehl auch selbst an Chrome senden. Sobald ich das getan habe, funktioniert es.
Chrome-Treiber unterstützen bereits:
Java:
webDriver = new ChromeDriver();
webDriver.manage().window().maximize();
Für mich hat keine der oben genannten Lösungen bei der Arbeit mit Selenium Web Driver C # + Chrome funktioniert:
--start-maximized
- Es wird ignoriertIch habe es mit InputSimulator zum Laufen gebracht :
var inputSim = new InputSimulator();
// WinKey + UP = Maximize focused window
inputSim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.UP);
Sie können mit diesem Code versuchen, das Chrome-Fenster zu maximieren.
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
WebDriver driver = new ChromeDriver(options);