最近、chromeバージョンを60に、chromedriverをバージョン2.31にアップグレードしました。ブラウザウィンドウを最大化しようとすると、次の例外が表示されるようになりました。
driver.driver.manage().window().maximize()
org.openqa.Selenium.WebDriverException:不明なエラー:ウィンドウの状態を最大化に変更できませんでした。現在の状態は正常です(セッション情報:chrome = 60.0.3112.78)(ドライバー情報:chromedriver = 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)、platform = 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、chrome = {userDataDir =/tmp/.org.chromium.Chromium.WABPhO、chromedriverVersion = 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)}、networkCo nnectionEnabled = false、expectedAlertBehaviour =、rotable = 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}]
GebでChromeDriverを使用して、ヘッドレスモードでテストを実行します。
ヘッドレスモードでテストを実行しているため、active
ブラウザーウィンドウは使用できません。そのようにあなたの
driver.driver.manage().window().maximize()
このような状況では、ドライバーはどのウィンドウを最大化するかわからないため、常に失敗します。
@DebanjanBが言及した内容に従うか、1440x900などの特定の画面サイズでヘッドレスブラウザーを起動して、次のようにすることができます。
driver.manage().window().setSize(new Dimension(1440, 900));
これは未解決のバグです(こちらをご覧ください): https://bugs.chromium.org/p/chromedriver/issues/detail?id=1901
私は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()は、chrome optionsを使用してヘッドレスを実行するのではなく、xvfb-runを使用してヘッドレスを実行しているため、まだ動作していませんか?
コードの行を少し変更することをお勧めします。
変化する:
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");