我已经使用Selenium阅读了几个与最小化相关的问题,但是在他们的文档中没有任何地方提到如何与最小化的窗口进行交互。如果在最小化浏览器后尝试在驱动程序上运行set_window_size()或maximum_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)
答案 0 :(得分:1)
我也有这个问题。
您必须在最小化之前将 driver.current_window_handle
存储为变量。
然后使用 driver.switch_to.window
切换到该窗口。
点击此链接阅读更多详细信息: How to un-minimize selenium window?
答案 1 :(得分:0)
在查看提交日志时找到了答案:https://github.com/w3c/webdriver/commit/1e1e590542da97f64cf58268940f88aec5ad6697
解决方案是在驱动程序上调用set_window_rect()。最小化,最大化或全屏显示后,这将恢复窗口的状态。
编辑:这里更大的问题是我使用的Webdriver不兼容w3c。以上仅适用于w3c网络驱动程序。