2017-07-28 79 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