Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebDriverException:未知错误:无法将窗口状态更改为最大化,Chrome 70&;MAC OS X上的Chromedriver 2.43_Java_Macos_Selenium_Google Chrome_Selenium Chromedriver - Fatal编程技术网

Java WebDriverException:未知错误:无法将窗口状态更改为最大化,Chrome 70&;MAC OS X上的Chromedriver 2.43

Java WebDriverException:未知错误:无法将窗口状态更改为最大化,Chrome 70&;MAC OS X上的Chromedriver 2.43,java,macos,selenium,google-chrome,selenium-chromedriver,Java,Macos,Selenium,Google Chrome,Selenium Chromedriver,我们在Mac电脑上,使用Chrome版本70.0.3538.67(官方版本)(64位),ChromeDriver 2.43.600229。Chrome窗口出现,但URL停留在“数据:,”。(下面是堆栈跟踪) 我们找到了一个使用Chrome版本69W/chromedriver 2.43的解决方案,但是Chrome仍然坚持更新自己 我们正在使用maven编译器插件3.6.1、maven surefire插件2.22.0运行Selenium java 3.4、htmlunit驱动程序2.27、test

我们在Mac电脑上,使用Chrome版本70.0.3538.67(官方版本)(64位),ChromeDriver 2.43.600229。Chrome窗口出现,但URL停留在“数据:,”。(下面是堆栈跟踪)

我们找到了一个使用Chrome版本69W/chromedriver 2.43的解决方案,但是Chrome仍然坚持更新自己

我们正在使用maven编译器插件3.6.1、maven surefire插件2.22.0运行Selenium java 3.4、htmlunit驱动程序2.27、testng 6.9.4、junit 4.7

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)
此错误消息

org.openqa.selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal
…表示ChromeDriver无法最大化Chrome浏览器客户端的窗口状态


更换了Buggy Mac OSX ChromeDriver 在ChromeVersion70发布后,你们中的一些人报告说,在Mac上使用ChromeDriver最大化浏览器窗口不再有效。ChromeDriver团队已经调查了这个问题,并为它创建了一个修复程序。ChromeDriver版本及其修复程序现在可在以下位置获得:

  • 如果您使用的是Chrome版本70(当前稳定版本),请从下载ChromeDriver版本70.0.3538.97
  • 如果您使用的是Chrome版本71(当前的测试版),请从下载ChromeDriver版本71.0.3578.33

ChromeDriver发布电子邮件的快照


但是,您的主要问题是所使用的二进制文件版本之间的不兼容,如下所示:

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");
  • 您的JDK版本是1.8.0131,非常古老。
    • 将JDK升级到最新级别
  • 您的Selenium客户端版本是3.4.0,几乎比它老了一年。
    • 将硒升级到当前水平

从另一个角度看,这个问题看起来像是一个回归问题

中的ChromeDriver v2.43明确提到:

ChromeDriver支持通过远程连接调整窗口大小

但是,根据最大化Chrome浏览器客户端的最佳实践,建议使用
ChromeOptions
类,如下所示:

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

参考文献 您可以在中找到详细的讨论


更新(2018年11月20日)
  • ChromeDriver2.44已发布
  • ChromeDriver2.44支持Chrome版本69至71
  • 此版本类似于ChromeDriver2.43,但有额外的错误修复
  • 支持chrome 72.x的ChromeDriver预计将于12月初发布

    • 使用Selenium 3.14.0、Chrome 70和Chromedriver 2.43也会发生同样的事情

      对我来说,修复方法是从我的chromeoptions中删除
      --start maximized
      标志,并在浏览器打开后调用一个方法,该方法执行以下操作:

          driver.manage().window().setPosition(new Point(0, 0));
          driver.manage().window().setSize(new Dimension(1920, 1080));
      
      我们还在运行CentOS的AWS EC2容器中运行远程自动化。
      在Windows和Mac中,上述标志在本地运行时没有问题。

      对于使用Codeception遇到此问题的用户,只需将“窗口大小”选项更改为false即可

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

      将chromedriver更新到版本2.44为我解决了这个问题(某种程度上)。不再获取错误,但窗口在屏幕之外水平最大化。然而,测试是有效的

      选项1。通过自制软件安装

      如果您以前通过自制软件安装过,则已将其移到桶中。因此,请卸载旧版本:

      brew uninstall chromedriver
      
      然后从cask安装新版本:

      brew tap homebrew/cask
      brew cask install chromedriver
      
      现在,您的路径中应该有新版本,并且错误消失了

      选项2。下载驱动程序

      从下载驱动程序

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

      并将其放置到您的路径。

      我在运行package suite时发现了这个问题,并尝试了ChromeOptions,但没有成功。因此,我尝试了这种方法并为我工作:

         Dimension ExpectedDimension=new Dimension(Screen dimensions accordingly)
         Dimension Before_Maximising= Driver.manage().window().getSize();
         Logging.info("Before_Maximising"+Before_Maximising);
         if(Before_Maximising.equals(ExpectedDimension)) {
              Logging.info("Already maximised");
         }
          else {
          Driver.manage().window().setSize(ExpectedDimension);;
          Dimension After_Maximising = Driver().manage().window().getSize();
          Logging.info("After_Maximising"+After_Maximising);
          }
      

      @用户2093025检查我更新的答案并告诉我状态。下载链接的Chromedriver修复了我的问题——我现在可以在mac上再次运行测试。非常感谢你的帮助!