使用 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
参考资料
几个相关的讨论:
我目前正在开发一个 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)?
根据 更改日志
- Deprecate Options
set_headless
methods in favor of property setter
因此,如果您使用的是 Selenium 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
参考资料
几个相关的讨论: