python - 获取“未知命令”异常调用“minimize_window”方法
问题描述
示例代码:
from selenium import webdriver
browser = webdriver.Chrome()
browser.minimize_window()
返回以下异常:
File "myScript.py", line 4, in <module>
browser.minimize_window()
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 738, in minimize_window
self.execute(Command.MINIMIZE_WINDOW)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 208, in check_response
raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: unknown command: session/8252be05ea571a2c623450db8ba097c0/window/minimize
添加行
print dir(browser)
说明这minimize_window()
是浏览器的一个列出的功能。那么给了什么?此功能是否与 Chrome 不兼容?
蟒蛇 2.7
解决方案
此错误消息...
selenium.common.exceptions.WebDriverException: Message: unknown command: session/8252be05ea571a2c623450db8ba097c0/window/minimize
...意味着对minimize_window()函数的调用没有被重新认识。
你看对了。由于现在WebDriver 规范是W3C推荐规范,因此根据W3C 推荐规范调整了最大化窗口的函数定义,如下所示:
def maximize_window(self):
"""
Maximizes the current window that webdriver is using
"""
params = None
command = Command.W3C_MAXIMIZE_WINDOW
if not self.w3c:
command = Command.MAXIMIZE_WINDOW
params = {'windowHandle': 'current'}
self.execute(command, params)
但是,用于最小化窗口的函数定义仍在等待Python 客户端中的W3C兼容,因为它仍然定义为:
def minimize_window(self):
"""
Invokes the window manager-specific 'minimize' operation
"""
self.execute(Command.MINIMIZE_WINDOW)
因此,您会看到错误:
unknown command: session/8252be05ea571a2c623450db8ba097c0/window/minimize
解决方案
由于默认/常见做法是以最大化模式打开浏览器,而Test Execution is In Progress 最小化浏览器将违反最佳实践,因为Selenium可能会失去对Browsing Context的关注,并且在Test Execution期间可能会引发异常。然而,Selenium 的 python客户端确实有一个minimize_window()方法,它最终将Chrome 浏览上下文有效地推送到后台。
Python:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.google.co.in')
driver.minimize_window()
Java解决方案:
driver.navigate().to("https://www.google.com/");
Point p = driver.manage().window().getPosition();
Dimension d = driver.manage().window().getSize();
driver.manage().window().setPosition(new Point((d.getHeight()-p.getX()), (d.getWidth()-p.getY())));
推荐阅读
- multithreading - 使用 Delphi Threads 的 4 核处理器效率为 25%
- angular - Angular 6 - 如何在插值字符串中使用 indexOf
- c# - 错误的选择标记呈现 id - asp-for 属性
- visual-studio-code - 在 VS Code 中为 Lerna 项目调试 Jest 测试
- xamarin - MVVM Cross android 方向问题
- c# - GroupBy 有或没有总和
- android - 如何获得有限的编号。回收站视图中的数据
- sql-server - 数据库角色可以通过它无权访问的存储过程访问表
- c# - 使用 Docker 从开发到生产的不同转换日期
- boost-python - 如何在 ubuntu 系统上安装 boost_python-py38