1717from selenium import webdriver
1818from selenium .webdriver .common .desired_capabilities import DesiredCapabilities
1919from selenium .webdriver .remote .webdriver import WebDriver as RemoteWebDriver
20+ from webdriver_manager .chrome import ChromeDriverManager
21+ from webdriver_manager .firefox import GeckoDriverManager
2022
2123from feapder .utils .log import log
2224from feapder .utils .tools import Singleton
@@ -58,6 +60,7 @@ def __init__(
5860 custom_argument = None ,
5961 xhr_url_regexes : list = None ,
6062 download_path = None ,
63+ auto_install_driver = False ,
6164 ** kwargs ,
6265 ):
6366 """
@@ -73,6 +76,7 @@ def __init__(
7376 executable_path: 浏览器路径,默认为默认路径
7477 xhr_url_regexes: 拦截xhr接口,支持正则,数组类型
7578 download_path: 文件下载保存路径;如果指定,不再出现“保留”“放弃”提示,仅对Chrome有效
79+ auto_install_driver: 自动下载浏览器驱动 支持chrome 和 firefox
7680 **kwargs:
7781 """
7882 self ._load_images = load_images
@@ -85,6 +89,7 @@ def __init__(
8589 self ._custom_argument = custom_argument
8690 self ._xhr_url_regexes = xhr_url_regexes
8791 self ._download_path = download_path
92+ self ._auto_install_driver = auto_install_driver
8893
8994 if self ._xhr_url_regexes and driver_type != WebDriver .CHROME :
9095 raise Exception (
@@ -165,6 +170,13 @@ def firefox_driver(self):
165170 firefox_profile = firefox_profile ,
166171 executable_path = self ._executable_path ,
167172 )
173+ elif self ._auto_install_driver :
174+ driver = webdriver .Firefox (
175+ capabilities = firefox_capabilities ,
176+ options = firefox_options ,
177+ firefox_profile = firefox_profile ,
178+ executable_path = GeckoDriverManager (print_first_line = False ).install (),
179+ )
168180 else :
169181 driver = webdriver .Firefox (
170182 capabilities = firefox_capabilities ,
@@ -230,6 +242,11 @@ def chrome_driver(self):
230242 driver = webdriver .Chrome (
231243 options = chrome_options , executable_path = self ._executable_path
232244 )
245+ elif self ._auto_install_driver :
246+ driver = webdriver .Chrome (
247+ options = chrome_options ,
248+ executable_path = ChromeDriverManager (print_first_line = False ).install (),
249+ )
233250 else :
234251 driver = webdriver .Chrome (options = chrome_options )
235252
0 commit comments