google-chrome - 无法在 headless 模式下最大化 Chrome 窗口

标签 google-chrome selenium selenium-chromedriver geb

我最近将 chrome 版本升级到 60,并将 chromedriver 升级到版本 2.31。发布当我尝试最大化浏览器窗口时,我开始收到以下异常。

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}]

我在 Geb 上使用 ChromeDriver 在 headless 模式下运行测试。

  • Chrome 版本 - 60.0.3112.78
  • chromedriver 版本 - 2.31.488763
  • 操作系统 - Ubuntu 14.04.4 LTS
  • Selenium 版本 - 2.53.1
  • WebDriver 语言绑定(bind)
  • 盖布 - 0.13.1

最佳答案

由于您在 headless 模式下运行测试,因此没有可用的事件浏览器窗口。因此你的

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

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

您可以遵循@DebanjanB提到的内容,也可以使用特定的屏幕尺寸(例如1440x900等)启动 headless 浏览器,执行类似的操作

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

[编辑] 现在,在大多数情况下,我已经看到 maximize() 方法也可以在 headless 模式下工作 - 但我还没有在 CI 系统上对此进行测试。

关于google-chrome - 无法在 headless 模式下最大化 Chrome 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45374377/

相关文章:

c# - 从谷歌浏览器当前标签获取当前 html

javascript - 是否可以向 Chrome 中现有的 websocket 连接发送消息?

python Selenium : How to reuse a class from another class

RSelenium,Chrome,如何设置下载目录,文件下载错误

android - 找不到可以自动化 Chrome '53.0.2785' 的 Chromedriver

javascript - SVG Chrome FireFox 区别使用 defs 元素,图形之间的关系

javascript - Chrome 中的 MIME 类型错误

python - 如何使用 Selenium Python 清除文本字段

python - NoSuchElementException : no such element: Unable to locate element: {"method" :"name" ,"selector" :"btnk"}

google-chrome - Chrome/Firefox 在通过 (Watir-)Webdriver 调用时不保留 cookie?