OS:Ubuntu 16.04.3 LTS
JDK:1.8.0_60
Selenium:3.0.0
Chrome:61.0.3163.100
本文描述了用JAVA编程控制Selenium时,遇到的“failed to change window state to maximized, current state is normal”错误的解决方法。
在一些自动化任务中,最大化浏览器窗口是一个非常频繁使用的功能,如果你用了 driver.manage().window().maximize() 这个方法来最大化浏览器窗口的话,有很大的机会遇到以下问题:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal(Session info: chrome=61.0.3163.100)(Driver info: chromedriver=2.30,platform=Linux 4.10.0-37-generic x86_64) (WARNING: The server did not provide any stacktrace information)Command duration or timeout: 818 millisecondsBuild info: version: 'unknown', revision: 'unknown', time: 'unknown'System info: host: 'codelast', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.10.0-37-generic', java.version: '1.8.0_60'Driver info: org.openqa.selenium.chrome.ChromeDriverCapabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.30, userDataDir=/tmp/.org.chromium.Chromium.uMCzgg}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=61.0.3163.100, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}]Session ID: 0f4ef7760fd6071f5aa9d31b98001663at 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:422)at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.maximize(RemoteWebDriver.java:882)
......
结果当然就是程序跑挂了。
这不是你的程序写的错,而是Selenium的一个bug。无数人都在各种网站反馈了这个问题,例如这里,这里,等等。而且貌似Selenium的开发者们暂时不打算修复这个问题,因为有人发现了一些变通方案来实现浏览器窗口最大化,并且验证了不会出现上面的问题。
文章来源:https://www.codelast.com/
我这里的情况是,如下代码是有问题的:
System.setProperty("webdriver.chrome.driver", "/usr/lib/chromium-browser/chromedriver"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); // maximize the browser window when it starts
这几乎肯定会触发上面所说的问题,只有运气好的少数几次不会挂。
文章来源:https://www.codelast.com/
解决办法如下:
System.setProperty("webdriver.chrome.driver", "/usr/lib/chromium-browser/chromedriver"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); WebDriver driver = new ChromeDriver(options);
经实际观察,几乎没有再出现上面的问题。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):
无法解决啊
public class HelloSelenium {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "lib/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);
// ChromeDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
// driver.manage().window().fullscreen();
driver.manage().window().maximize();// 有bug 上述方法未解决
WebElement text = driver.findElement(By.id("kw"));
text.sendKeys("selenium");
driver.findElement(By.id("su")).click();
// driver.quit();
}
}
文章已经发布很久了。当时可以,但现在可能方法已经失效
python 怎么解决呢
这就不知道了,我没在Python下用过Selenium
请问解决了吗?我也是在python下遇到这个问题了
先缩小 再全屏也可以解决