我最近将我的chrome版本升级到60并将chromedriver升级到版本2.31。发布当我尝试最大化浏览器窗口时,我已经开始获得以下异常。
driver.driver.manage().window().maximize()
org.openqa.selenium.WebDriverException:未知错误:失败 将窗口状态更改为最大化,当前状态正常(会话 info:chrome = 60.0.3112.78)(驱动信息:chromedriver = 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),平台= Linux的 4.2.0-27-generic x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:108毫秒 构建信息:版本:' 2.53.1',修订版: ' a36b8b1cd5757287168e54b817830adce9b0158d',时间:' 2016-06-30 19:26:09'系统信息:主持人:' bb-blr-prod-stage-stg1-01',ip: ' 10.3.211.2',os.name:' Linux',os.arch:' amd64',os.version: ' 4.2.0-27-generic',java.version:' 1.7.0_80'会话ID: c7de7149dd490cc7760d2f4fc49f0325驱动程序信息: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform = LINUX, acceptSslCerts = true,javascriptEnabled = true,browserName = chrome, 铬= {userDataDir = / TMP / .org.chromium.Chromium.WABPhO, chromedriverVersion = 2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8)}, networkConnectionEnabled = false,unexpectedAlertBehaviour =, rotating = false,setWindowRect = true,locationContextEnabled = true, mobileEmulationEnabled = false,pageLoadStrategy = normal, version = 60.0.3112.78,takesHeapSnapshot = true, cssSelectorsEnabled = true,databaseEnabled = false,handlesAlerts = true, browserConnectionEnabled = false,webStorageEnabled = true, nativeEvents = true,hasTouchScreen = false, applicationCacheEnabled = false,takeScreenshot = true}]
我使用Geb上的ChromeDriver在无头模式下运行测试。
答案 0 :(得分:13)
由于您在无头模式下运行测试,因此没有active
浏览器窗口可用。就这样你的
driver.driver.manage().window().maximize()
在这种情况下,总是会失败,因为驱动程序不知道哪个窗口要最大化,因为没有任何可用的窗口。
你可以按照@DebanjanB提到的那样,或者你可以用1440x900之类的特定屏幕尺寸启动无头浏览器,做这样的事情
driver.manage().window().setSize(new Dimension(1440, 900));
答案 1 :(得分:6)
答案 2 :(得分:3)
这是一个开放的错误(请点击此处):https://bugs.chromium.org/p/chromedriver/issues/detail?id=1901
答案 3 :(得分:2)
我正在使用chromedriver 2.30& chrome浏览器v60通过量角器。虽然我没有通过chromeoptions进行测试,但我仍然无法进行测试。相反,我在unix发行版上使用xvfb-run运行无头测试。我遇到了这个问题,虽然它随机失败了。见下面的堆栈
[chrome #11] [31mWebDriverError: unknown error: failed to change window state to maximized, current state is normal
[chrome #11] (Session info: chrome=60.0.3112.78)
[chrome #11] (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 3.10.0-514.26.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
[chrome #11] Command duration or timeout: 122 milliseconds
[chrome #11] Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
[chrome #11] System info: host: 's1wfadvcilvm08', ip: '172.16.184.183', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-514.26.2.el7.x86_64', java.version: '1.8.0_141'
[chrome #11] Driver info: org.openqa.selenium.chrome.ChromeDriver
[chrome #11] Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57), userDataDir=/tmp/.org.chromium.Chromium.BNsN1w}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.78, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
每个测试开始时的代码执行以下操作
browser.manage().window().maximize();
更改为
driver.driver.manage().window().maximize();
driver.manage().window().maximize();
不幸的是,对我不起作用。不应该使用browser.manage()。window()。maximize()仍然可以工作,因为我使用xvfb-run运行无头而不是通过chrome选项进行无头操作?
答案 4 :(得分:1)
我建议你稍微更改代码行:
变化:
driver.driver.manage().window().maximize()
要:
driver.manage().window().maximize()
如果它没有帮助,假设您的Selenium绑定为Java
并且Chrome
模式下使用headless
按照最佳做法,建议最大化Google Chrome浏览器通过ChromeOptions
类,如下所示:
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.navigate().to("https://google.com");
答案 5 :(得分:0)
此错误最初在ChromeDriver 2.42中修复,并在macOS直到2.44为止才存在(检查更改日志:http://chromedriver.chromium.org/downloads)。
因此,对于每个遇到此问题的人都有一个解决方案:更新驱动程序版本