首页 > 解决方案 > 如何使用硒取消最小化浏览器窗口?

问题描述

我已经使用 Selenium 阅读了几个与最小化相关的问题,但他们的文档中没有任何地方说明如何与已最小化的窗口交互。如果您在最小化浏览器后尝试在驱动程序上运行set_window_size()maximize_window()函数,Selenium 会抛出异常,指出窗口状态对这些操作无效。我很难相信一旦你最小化了窗口,你就不能再驱动浏览器了。有人做过吗?

编辑:这是我的代码:

self.driver.minimize_window()
self.driver.maximize_window()

这是我看到的回溯:

Traceback (most recent call last):
...
    self.browser.maximize_window()
  File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 737, in maximize_window
    self.execute(command, params)
  File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/user/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: failed to change window state to normal, current state is minimized
  (Session info: chrome=70.0.3538.77)
  (Driver info: chromedriver=2.41,platform=Linux 4.15.0-39-generic x86_64)

标签: pythonseleniumminimize

解决方案


通过提交日志找到答案:https ://github.com/w3c/webdriver/commit/1e1e590542da97f64cf58268940f88aec5ad6697

解决方案是在驱动程序上调用 set_window_rect()。这将在最小化、最大化或全屏后恢复窗口的状态。

编辑:这里更大的问题是我使用的网络驱动程序不符合 w3c 标准。以上仅适用于 w3c webdrivers。


推荐阅读