使用 Selenium Python 客户端在不同浏览器中处理无头模式

Handling headless mode in different browsers using Selenium Python client

我目前正在开发一个 python (3.7) CLI 程序,该程序使用 Selenium 并将被不同的人群使用。

我 运行 遇到的问题如下:

对于 Chrome 中的“headless”之类的设置选项,我使用

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(executable_path,options=chrome_options)

对于 Firefox,代码如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(executable_path,options=options)

所以我想知道是否有一种方法可以规范这些设置/优雅地处理不同的浏览器,或者我是否必须基本上将所有内容编写 2 次甚至 3 次(可能添加 Safari 或 Opera)?

根据 更改日志 Python 客户端 v3.12.0 :

  • Deprecate Options set_headless methods in favor of property setter

因此,如果您使用的是 Selenium v 3.12.0 或更高版本,您需要使用 [=36= 而不是 chrome_options.add_argument("--headless") ]headless属性setter如下:

options.headless = True

否则您可能会看到 DeprecationWarning 如下:

DeprecationWarning: use setter for headless property instead of set_headless opts.set_headless(headless=True)

You can find a relevant detailed discussion in


参考资料

几个相关的讨论: