提问人:Hemendra 提问时间:8/2/2023 最后编辑:Michael MintzHemendra 更新时间:10/16/2023 访问量:520
Python:如何为内置的 Selenium Manager 设置自定义 webdriver 下载路径
Python: How to set a custom webdriver download path for the built-in Selenium Manager
问:
如何为内置的Selenium Manager设置自定义Web驱动程序下载路径? 与其他第三方驱动程序管理器不同,可用的文档很少,而且我在任何地方都找不到任何相关讨论。
driver = webdriver.Chrome(options=chrome_options)
WebDriver 对象中是否包含可提取的驱动程序路径数据?<selenium.webdriver.chrome.webdriver.WebDriver (session="8cc15b28be77b3773576ef8b373be420")>
答:
web驱动程序。Chrome 有一个可选参数service
def __init__(self, options: Options = None, service: Service = None, keep_alive: bool = True):
service = service if service else Service()
options = options if options else Options()
super().__init__(...)
如果是,它会创建一个默认服务None
class Service(service.ChromiumService):
def __init__(self, executable_path=None, ...):
super().__init__(executable_path=executable_path, ...)
你可以用你自己的填充它Service
webdriver.Chrome(service=Service(executable_path=driver_executable_path), options=options)
评论
executable_path
path
chrome_Service(ChromeDriverManager(path = "./Drivers", cache_valid_range=10).install())
from selenium.webdriver.common.driver_finder import DriverFinder chrome_options = Options() driver_path = DriverFinder.get_path(Service(), chrome_options)
C:\Users\xxxxxx\.cache\selenium\chromedriver\win64\114.0.5735.90\chromedriver.exe
如果这就是你要找的!
- 下面的代码使用 from 类中提供的路径
chromedriver.exe
Service
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('C:\Backup\Selenium jars\drivers\chromedriver-win32\chromedriver.exe') # chromedriver.exe path
driver = webdriver.Chrome(service = service)
driver.get("https://www.google.com/")
- 下面的代码使用
chromedriver.exe
SeleniumManager
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com/")
SeleniumManager
将在以下路径中查找/或下载:chromedriver.exe
要传入 ,您可以使用 arg。executable_path
service
以下是 Chrome 的示例:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(executable_path="./chromedriver")
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()
下面是一个 Firefox 示例:
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
service = Service(executable_path="PATH_TO_GECKODRIVER")
options = webdriver.FirefoxOptions()
driver = webdriver.Firefox(service=service, options=options)
# ...
driver.quit()
您不再需要在 中指定一个完全可操作的 Selenium Manager,因此这就是您所需要的:executable_path
4.11.2
from selenium import webdriver
driver = webdriver.Chrome()
# ...
driver.quit()
这是一个带有选项/首选项占位符的占位符:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()
TL的;DR 答案
将环境变量设置为所需的驱动程序路径:SE_CACHE_PATH
os.environ["SE_CACHE_PATH"] = "/path/to/my/drivers/folder"
完整答案
如果要更改 Selenium Manager 下载驱动程序的位置,则需要修改 Selenium Manager 的缓存目录。据我所知,没有什么比这篇文章中提到的 WebDriveManager 更好了,它方便地设置了路径。Selenium Manager 的 rust 可执行文件包装在文件中。更改默认缓存目录的功能是在发布此问题后不久合并的 PR 中请求的。
除了编辑源代码以将 --cache-path 标志添加到后面的变量中之外,目前没有方便的方法可以使用公开的方法/函数更改缓存目录。对于最佳方法,应按如下所示设置环境变量:selenium_manager.py
selenium_manager.py
args
SE_CACHE_PATH
from pathlib import Path
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
DRIVERS_DIR = Path(__file__).resolve().parent / "drivers"
DRIVERS_DIR.mkdir(exist_ok=True)
os.environ["SE_CACHE_PATH"] = DRIVERS_DIR.name
driver = webdriver.Chrome(service=Service())
if __name__ == "__main__":
driver.get("https://stackoverflow.com/")
评论