WebDriverException:未知错误:无法将窗口状态更改为最大化,MacOSX上的ChromeDriver v2.43和Chrome 70当前状态正常

时间:2018-10-19 02:10:30

标签: java macos selenium google-chrome selenium-chromedriver

我的macOS刚刚将chrome自动升级到v70,我将chromedriver相应升级到了最新版本,但是,由于调用时出现以下错误,我的Selenium自动化测试无法运行

<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"><div>

错误消息是

tempDriver.manage().window().maximize();

有什么想法吗?我知道Selenium的版本有些旧,但由于公司政策或其他原因,我无法对其进行升级。

巴林

4 个答案:

答案 0 :(得分:2)

此错误消息...

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

...表示 ChromeDriver 无法最大化 Chrome浏览器客户端的窗口状态。

不确定使用 ChromeDriver v2.43 Chrome浏览器v70.0 组合如何解决此问题,但看起来像是Feature request : ChromeDriver to support window resizing over a remote connection的回归问题。 / p> Release Notes中的

ChromeDriver v2.43 已明确提及:

  

已解决的问题1855:功能请求:ChromeDriver支持通过远程连接[[Pri-2]]调整窗口大小


已替换Buggy Mac OSX ChromeDriver

Chrome版本70发行后,有些人报告说使用ChromeDriver在Mac上最大化浏览器窗口不再有效。 ChromeDriver小组已经研究了此问题,并为此创建了修复程序。现在可以在以下位置使用带有修复程序的ChromeDriver构建:

ChromeDriver版本电子邮件的快照:

ChromeDriver_new


不过,根据最佳实践来最大化 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");

您可以在driver.manage().window().maximize() issue with ChromeDriver 2.33

中找到详细的讨论

其他注意事项

  • 您的 JDK版本 1.8.0_111 ,这是古老的
  • 您的 Selenium Client 版本是 2013-12-16 13:18:38 2.39.0 ,几乎是 2岁

答案 1 :(得分:1)

在问题解决之前,您可以使用以下方法绕过它:

自定义窗口大小

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

您可以获得屏幕分辨率

Toolkit toolkit = Toolkit.getDefaultToolkit();
int width = (int) toolkit.getScreenSize().getWidth();
int height = (int) toolkit.getScreenSize().getHeight();

chrome的参数

ChromeOptions options = new ChromeOptions();
options.addArgument("--start-maximized");

JavaScript执行器

((JavascriptExecutor) driver).executeScript("if(window.screen){
    window.moveTo(0, 0);
    window.resizeTo(window.screen.availWidth, window.screen.availHeight);
    };");

答案 2 :(得分:0)

我们遇到了相同的问题,解决方法是注释掉代码:

tempDriver.manage().window().maximize();

答案 3 :(得分:0)

在运行软件包套件并尝试使用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);
   }