我最近升级了我的chrome版本到60,chromedriver版本到2. 31。帖子说,当我试图最大化浏览器窗口时,我已经开始得到下面的异常。
driver.driver.manage().window().maximize()
org.openqa.selenium.WebDriverException:未知错误:无法将窗口状态更改为最大化,当前状态正常(会话信息: chrome = 60.0.3112.78)(驱动程序信息:Chrome驱动程序= 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8),平台= Linux 4.2.0 - 27-通用x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:108毫秒构建信息:版本:"2.53.1",修订版本:'a36b8b1cd5757287168e54b817830adce9b0158d',时间:'2016 - 06 - 30 19:26:09'系统信息:主持人:"bb-blr-prod-stage-stg1 - 01",IP地址:"10.3.211.2",www.example.com:"Linux",操作系统架构:os.name"4.2.0 - 27-通用",Java版本:"1.7.0_80"会话ID:驱动程序信息:org. openqa. selenium. chrome. Chrome驱动程序功能{平台= LINUX,接受SSL证书= true,javascript启用= true,浏览器名称= chrome,Chrome = {用户数据目录=/tmp/. org. chromium. chromium. WABPhO,Chrome驱动程序版本= 2.31.488763(092de99f48a300323ecf8c2a4e2e7cab51de5ba8)},网络连接启用=假,意外警报行为=,可旋转=假,设置窗口矩形=真,位置上下文启用=真,移动仿真已启用=假,页面加载策略=正常,版本= 60.0.3112.78,获取堆快照=真,cssSelectors已启用=真,数据库已启用=假,句柄警报=真,浏览器连接已启用=假,网络存储已启用=真,本机事件=真,具有触摸屏=假,应用程序缓存已启用=假,获取屏幕快照=真}}, 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在无头模式下运行测试。
- Chrome版本-60.0.3112.78
- Chrome驱动程序版本-2.31.488763
- 操作系统-Ubuntu 14.04.4 LTS
- selenium 版本-2.53.1
- WebDriver语言绑定
- 吉卜-0.13.1
7条答案
按热度按时间to94eoyn1#
由于您是在headless模式下运行测试,因此没有
active
浏览器窗口可用。在这种情况下总是会失败,因为驱动程序不知道要最大化哪个窗口,因为没有可用的窗口。
你可以按照@DebanjanB所提到的操作,或者你可以用一个特定的屏幕大小,比如1440 x900等,来启动无头浏览器,这样做
[编辑]在大多数情况下,我已经看到
maximize()
方法也可以在headless中工作--然而我还没有在CI系统上测试过。jslywgbw2#
在代码中添加以下
ChromeOption
:另请参考this blog了解更多信息
m3eecexj3#
这是一个未解决的漏洞(请点击此处):https://bugs.chromium.org/p/chromedriver/issues/detail?id=1901
hgqdbh6s4#
代码行中似乎有一个小的差异:
您需要将此行代码替换为:
如果此解决方案不能解决您的问题,要在
headless
中使用 * Google Chrome *,您可以使用以下任一解决方案:使用
start-maximized
建议通过
ChromeOptions
类最大化 * Google Chrome * 浏览器,如下所示:使用
--window-size=1400,600
或者,您也可以为预期的
window size
* 添加**参数 *,如下所示:使用
setSize(new Dimension(1440, 900))
时间;日期
您可以在Selenium Firefox headless中找到关于***最大化窗口***的基于Selenium python客户端的讨论,返回不同的结果
eufgjt7s5#
我使用chromedriver 2.30和chrome浏览器v60通过量角器。我运行测试headless太虽然我不这样做通过chromeoptions。而是我运行测试headless使用xvfb-run在unix发行版。我遇到这个问题也虽然它失败随机为我。见下面的堆栈
我的代码在每个测试开始时执行以下操作
更改为
不幸的是,我也不能使用。browser.manage().window().maximize()不应该仍然工作吗?因为我使用xvfb-run运行headless,而不是通过chrome选项运行headless。
gdx19jrr6#
此错误最初在ChromeDriver 2.42中得到修复,并且在2.44之前的macOS中实际存在(检查更改日志:http://chromedriver.chromium.org/downloads)。
所以对于每个面对这个问题的人来说,都有一个解决方案:更新驱动程序版本
xkrw2x1b7#
这是Ubuntu 20.04 LTS上的无头谷歌Chrome的已知问题。我只是使用Java的awt包来获得whatevr屏幕的最大分辨率,即Ubuntu LTS的xvbf和Windows 10的当前屏幕,并在ChromeOption的arggment中设置它来配置Webdriver
屏幕尺寸=工具包.getDefaultToolkit().getScreenSize();
添加参数(“--窗口大小=”+(整数)屏幕尺寸.获取宽度()+“,”+(整数)屏幕尺寸.获取高度());