web-dev-qa-db-fra.com

WebDriverException: erreur inconnue: échec de la modification de l'état de la fenêtre, l'état actuel est normal avec Chrome 70 & Chromedriver 2.43 sous MAC OS X

Nous sommes sur Mac, utilisant la version de Chrome 70.0.3538.67 (Build officiel) (64 bits), ChromeDriver 2.43.600229. Les fenêtres Chrome apparaissent, mais l’URL reste bloquée sur "data:". (trace de pile ci-dessous)

Nous avons trouvé une solution de contournement avec Chrome version 69 avec chromedriver 2.43. Toutefois, Chrome continue d’insister pour se mettre à jour. 

Nous exécutons Selenium-Java 3.4, htmlunit-driver 2.27, test 6.9.4, junit 4.7 avec maven-compiler-plugin 3.6.1, maven-surefire-plugin 2.22.0.

org.openqa.Selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal
  (Session info: chrome=70.0.3538.67)
  (Driver info: chromedriver=2.43.600229 (3fae4d0cda5334b4f533bede5a4787f7b832d052),platform=Mac OS X 10.13.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 107 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: Host: 'edited', ip: 'edited', os.name: 'Mac OS X', os.Arch: 'x86_64', os.version: '10.13.6', Java.version: '1.8.0_131'
Driver info: org.openqa.Selenium.chrome.ChromeDriver
Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=false, goog:chromeOptions={debuggerAddress=localhost:52400}, acceptInsecureCerts=false, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.43.600229 (3fae4d0cda5334b4f533bede5a4787f7b832d052), userDataDir=/var/folders/cd/rrq4w8sd3gz92ygpfx5_kwtw0000gp/T/.org.chromium.Chromium.DCVcH3}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, version=70.0.3538.67, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
Session ID: adb51408a3b04f990288d09604daa3a9
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:423)
    at org.openqa.Selenium.remote.ErrorHandler.createThrowable(ErrorHandler.Java:215)
    at org.openqa.Selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.Java:167)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:671)
    at org.openqa.Selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.Java:694)
    at org.openqa.Selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.maximize(RemoteWebDriver.Java:925)
    at ufis.common.TestSuiteUtils.getDriver(TestSuiteUtils.Java:59)
    at ufis.test.cv.categories.research.independentresearch.IndependentResearchValidationTests.setUpClass(IndependentResearchValidationTests.Java:45)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.Java:85)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.Java:517)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:213)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.Java:140)
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.Java:170)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.Java:104)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:748)
8
user2093025

Ce message d'erreur ...

org.openqa.Selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal

... implique que le ChromeDriver n'a pas pu maximiser l'état de la fenêtre du client Navigateur Chrome}.


Buggy Mac OSX ChromeDriver Remplacé

Après la publication de la version 70 de Chrome, certains d'entre vous ont signalé que l'utilisation de ChromeDriver pour agrandir la fenêtre du navigateur sur Mac ne fonctionnait plus. L'équipe ChromeDriver a étudié ce problème et créé un correctif. Les versions de ChromeDriver avec le correctif sont désormais disponibles aux emplacements suivants:


Instantané du courrier électronique de la version de ChromeDriver

ChromeDriver_new


Cependant, votre problème principal est le incompatibility entre la version des fichiers binaires que vous utilisez comme suit:

  • Votre version JDK _ est 1.8.0_131, ce qui est joli ancient .
    • Mettez à niveau JDK aux derniers niveaux JDK 8u181 .
  • Votre version de Selenium Client est 3.4.0, soit presque un an de plus .

D'un autre point de vue, ce problème ressemble à un problème de régression de Demande de fonctionnalité: ChromeDriver pour prendre en charge le redimensionnement de la fenêtre via une connexion distante .

ChromeDriver v2.43 dans les notes de publication ont explicitement mentionné:

ChromeDriver pour prendre en charge le redimensionnement de la fenêtre via une connexion distante

Toutefois, conformément à meilleures pratiques pour optimiser le client navigateur Chrome}, il est suggéré d'utiliser la classe ChromeOptions comme suit:

System.setProperty("webdriver.chrome.driver", "C:\\your_directory\\chromedriver.exe");
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-infobars");
opt.addArguments("--start-maximized");
opt.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(opt);
driver.get("https://google.com");

Référence

Vous pouvez trouver une discussion détaillée dans driver.manage (). Window (). Maxim () avec ChromeDriver 2.33


Mise à jour (20 novembre 2018)

  • ChromeDriver 2.44 a été publié.
  • ChromeDriver 2.44 prend en charge les versions de Chrome 69 à 71
  • Cette version est similaire à ChromeDriver 2.43, mais avec des corrections de bogues supplémentaires. 
  • Un lecteur ChromeDriver prenant en charge chrome 72.x devrait être commercialisé début décembre.
6
DebanjanB

Si la même chose s’était produite avec Selenium 3.14.0, Chrome 70, Chromedriver 2.43.

Le correctif pour moi était de supprimer l'indicateur --start-maximized de mes chromeoptions et, une fois le navigateur ouvert, appelez une méthode qui:

    driver.manage().window().setPosition(new Point(0, 0));
    driver.manage().window().setSize(new Dimension(1920, 1080));

Nous exécutons également notre automatisation à distance dans les conteneurs AWS EC2 exécutant CentOS . Sous Windows et Mac, l'indicateur ci-dessus ne présentait aucun problème lors de son exécution locale.

0
Jim B

La mise à jour de chromedriver vers la version 2.44 a résolu le problème pour moi (en quelque sorte). Ne recevez plus l'erreur, mais la fenêtre est maximisée horizontalement au-delà de l'écran. Cependant, les tests fonctionnent.

Option 1. Installer via homebrew

Si vous l'avez déjà installé via homebrew, il a été déplacé dans fût. Alors, désinstallez l'ancienne version:

brew uninstall chromedriver

Ensuite, installez la nouvelle version de cask:

brew tap homebrew/cask
brew cask install chromedriver

Maintenant, vous devriez avoir la nouvelle version dans votre chemin et l'erreur est partie.

Option 2. Télécharger le pilote

Téléchargez le pilote de

https://chromedriver.storage.googleapis.com/index.html?path=2.44/

Et placez-le sur votre chemin.

0
Mikko

Pour ceux qui rencontrent ce problème avec Codeception, il suffit de changer l’option window_size en false.

- Webdriver:
   url: 'http://localhost/'
   window_size: false
0
CosetteN