【发布时间】:2020-07-22 23:11:48
【问题描述】:
【问题讨论】:
标签: python selenium firefox geckodriver minimize
【问题讨论】:
标签: python selenium firefox geckodriver minimize
您必须将 firefox 驱动程序选项设置为 headless 以使其最小化打开。这是执行此操作的代码。
fireFoxOptions = webdriver.FirefoxOptions()
fireFoxOptions.set_headless()
driver = webdriver.Firefox(firefox_options=fireFoxOptions)
如果这对您不起作用,您可以使用其他方法。查看其他 SO 问题:How to make firefox headless programmatically in Selenium with python?
【讨论】:
geckodriver 的核心形式是一个代理,用于使用与 W3C WebDriver 兼容的客户端与基于 Gecko 的浏览器进行交互。
该程序提供WebDriver protocol 描述的HTTP API 以与Gecko 浏览器(例如Firefox)进行通信。它通过充当本地端和远程端之间的代理将调用转换为Firefox remote protocol。
所以或多或少它就像一项服务。所以不应该出现最小化 GeckoDriver 的问题。
Selenium 驱动的 GeckoDriver 启动 firefox 浏览上下文 默认以半最大化模式打开。也许在 browsing context 被 minimized 执行测试时会违反所有最佳实践,因为 Selenium 可能会失去对 Browsing Context 的关注并且在测试执行期间可能会引发异常。
然而,Selenium 的python 客户端确实有一个minimize_window() 方法,它最终有效地最小化了Chrome 浏览上下文。
您可以使用以下解决方案:
火狐:
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
driver = webdriver.Firefox(firefox_options=options, executable_path=r'C:\WebDrivers\geckodriver.exe')
driver.get('https://www.google.co.in')
driver.minimize_window()
铬:
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()
您可以在以下位置找到详细的相关讨论:
How to make firefox headless programmatically in Selenium with python?
【讨论】: