2017-07-28 49 views
6

我最近将我的镀铬版本升级到60,将镀铬驱动程序升级到版本2.31。发布我开始得到以下例外,当我尝试做一个浏览器窗口最大化。无法在无头模式下最大化Chrome窗口

driver.driver.manage().window().maximize() 

org.openqa.selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal (Session info: chrome=60.0.3112.78) (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.2.0-27-generic x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 108 milliseconds Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09' System info: host: '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' Session ID: c7de7149dd490cc7760d2f4fc49f0325 Driver info: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/tmp/.org.chromium.Chromium.WABPhO, chromedriverVersion=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8)}, networkConnectionEnabled=false, unexpectedAlertBehaviour=, rotatable=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, takesScreenshot=true}]

我跑我的无头模式的测试上创业板使用ChromeDriver

  • Chrome版本 - 60.0.3112.78
  • chromedriver版本 - 2.31.488763
  • 操作系统 - Ubuntu的LTS 14.04.4
  • 硒版本 - 2.53.1
  • webdriver的语言绑定
  • 盖布 - 0.13.1
+0

其中硒绑定(语言)? – DebanjanB

回答

0

这是您的问题的答案:

在第一想到我会建议你改变的代码位行:

变化:

driver.driver.manage().window().maximize() 

要:

driver.manage().window().maximize() 

如果它没有帮助,假设您的Selenium绑定为Java,并按照最佳做法在headless模式下使用Chrome模式,建议您通过ChromeOptions最大化Google Chrome浏览器类,如下所示:

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

因为你正在运行在一个无头的模式下测试,没有可用active浏览器窗口。因此您的

在这种情况下总是会失败,因为驱动程序不知道哪个窗口最大化,因为没有任何可用。

您可以遵循什么@DebanjanB提到或者你可以用一个特定的屏幕尺寸启动无头的浏览器,如1440等,做这样的事情

driver.manage().window().setSize(new Dimension(1440, 900)); 
0

我使用chromedriver 2.30 & chrome浏览器V60通过量角器。尽管我没有通过chromeoptions来执行测试,但我仍然无法运行测试。相反,我使用xvfb在unix发行版上运行无头测试。我遇到了这个问题,尽管它随机失败了。看看下面堆放

[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()。窗口()。最大化()仍然工作,因为我正在运行无头使用xvfb运行,而不是通过铬选项做无头?

1

添加下面ChromeOption在你的代码:

options.addArguments("--window-size=1325x744"); 

另请参阅this blog更多

+0

已确认在无铅模式下使用Selenium 3.8.1和ChromeDriver 2.34。作为一种解决方法,我为本地机器的原始分辨率配置了一个配置,以便不对特定值进行硬编码。 – silver