2017-08-07 2 views
3

Wir verwenden Selenium mit Java, um unsere Webanwendung zu automatisieren. Wir haben funktionierenden Code, um automatisierte Testskripte auf Windows-Betriebssystem für die drei Browser (IE, Chrome, Firefox - Neueste Version) laufen zu lassen.Safari-Browser auf MAC mit Selenium Webdriver nicht maximieren

Wir haben die Anforderung, automatisierte Testskripte auf MAC-Betriebssystem - Safari-Browser zu betreiben.

Umwelt Details:

MAC OS-Version: macOS Sierra Version 10.12.5

Safari Browser Version: 10.1.1 (12603.2.4)

Selen Standalone Serverversion: 3.4.0

Java-Version: 1.8.0_112

Verbundene MAC-VM mit VNC-Viewer (Sys-Admin-Team stellte MAC VM für unsere Tests bereit).

Bei der Ausführung von Testskripten auf MAC maximiert der Code nicht den Safari-Browser, was für andere Browser (IE, Chrome und Firefox) unter Windows funktioniert. Aus diesem Grund können wir einige Steuerelemente für die Anwendung nicht finden.

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

Wir erhalten keine Ausnahme, Code wird ausgeführt, führt aber keine Aktion aus.

Bitte helfen, Safari Browser zu überwinden Problem auf MAC zu maximieren.

Wirklich dachte ich, mein Problem wurde mit dieser Lösung gelöst, versuchte Code, um Safari-Browser zu maximieren, aber Ausnahme bekommen.

Code:

SafariOptions options = new SafariOptions(); 
options.setUseCleanSession(true); 
driver = new SafariDriver(options); 
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); 
org.openqa.selenium.Dimension d = new org.openqa.selenium.Dimension(intScreenWidth, intScreenHeight); 
driver.manage().window().setSize(d); 

Ausnahme:

7. August 2017 15.11.53 org.openqa.selenium.remote.ProtocolHandshake create INFO: Erkannte Dialekt: OSS Exception in Thread "Haupt" org.openqa.selenium.NoSuchWindowException: Eine Anforderung, ein Fenster zu verwenden, konnte nicht erfüllt werden, da das Fenster nicht gefunden wurde. (WARNUNG: Der Server hat keine Stacktrace-Informationen bereitgestellt) Befehlsdauer oder Zeitlimit: 27 Millisekunden Build-Info: Version: '3.4.0', Revision: '5234b32', time: '2017-03-10 09:04 : 52 -0800 'System info: host:' Mac.local ', ip:' fe80: 0: 0: 0: 4c6: 11dc: 3f91: 11f8% en0 ', os.name:' Mac OS X ', os.arch: 'x86_64', Versionsnummer: '10 .12.6 ', java.version:' 1.8.0_121 'Treiberinfo: org.openqa.selenium.safari.SafariDriver Capabilities [{applicationCacheEnabled = true, rotierbar = false, databaseEnabled = true, handlesAlerts = true, Version = 12603.3.8, cleanSession = true, platform = MAC, nativeEvents = true, locationContextEnabled = false, webStorageEnabled = true, browser = safari, javascriptEnabled = true, Platform = macOS, cssSelectorsEnabled = true}] Session ID: BA265536-18D3- 490E-B6DB-40D8BBF25937 bei sun.reflect.NativeConstructorAccessorImpl.newInstance0 (native Methode) bei sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) bei sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) bei java.lang.reflect.Constructor.newInstance (Constructor.java:423) bei org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:216) bei org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:168) bei org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:638) bei org.openqa.selenium.remote.RemoteWebDriver $ RemoteWebDriverOptions $ RemoteWindow.setSize (RemoteWebDriver.java:860) bei Sample.Safari.main (Safari.java:20)

Antwort

3

Das Safari Browser - Maximierungsproblem wurde nach dem Upgrade der Safari - Version auf 11.0 behoben (1260 4.1.35)

und der Arbeitscode ist

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

Hallo, ich habe den Fix geschrieben. Ich kann bestätigen, dass Safari 11 und später das in der Frage beschriebene Problem nicht haben sollte. –

+0

Das ist großartig, danke Brian Burg – SeJaPy

0

Wir haben Fehler beobachten mit neuen Treiberbibliotheken. Sie können etwas alte Jars verwenden, die mit neuen Browserversionen umgehen können.

Sie können auch andere Optionen verwenden, um das Browserfenster zu maximieren.

Beispiel: -

unter Option hinzufügen und es an den Treiber übergeben: -

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

Der vollständige Code wie folgt aussehen wird: -

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

ODER

((IJavaScriptExecutor)driver).ExecuteScript("window.resizeTo(1024, 768);"); 

Versuchen Sie dies auf 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); 

Im Folgenden Artikel werden diese beispielsweise in Details haben: -

http://www.abodeqa.com/2015/01/20/maximize-window-using-selenium-webdriver-and-by-using-abstract-window-toolkit/

Hoffe, es wird Ihnen helfen :)

+0

Danke für die schnelle Antwort. Wir haben Probleme mit dem Safari-Browser. – SeJaPy

+0

Ich habe einen Code für Safari in meiner Antwort hinzugefügt –

+0

Wenn meine Antwort hilft, Sie Problem zu lösen. Bitte akzeptieren Sie die Antwort, indem Sie auf das richtige Zeichen ganz links von meiner Antwort, nur unter oben und unten Stimmen. bitte stimme auch ab .. Es wird mir und anderen Leuten wirklich helfen, die diese Frage in Zukunft weiterleiten werden. So funktioniert stackoverflow :) ... siehe: - https://meta.stackexchange.com/questions/5234/ how-does-accepting-an-answer-work –