首页 > 解决方案 > 获取“未知命令”异常调用“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

标签: pythonpython-2.7seleniumselenium-webdriver

解决方案


此错误消息...

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 的 客户端确实有一个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())));

推荐阅读