强制selenium管理器在python中下载浏览器

问题描述 投票:0回答:1

我想强制 selenium 管理器下载浏览器,而不是使用任何本地安装的浏览器。根据 doc 该选项存在。但我真的不明白什么时候应该在代码中定义该选项。

最明显的选项似乎不起作用。

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

opts = Options()
opts.add_argument("--force-browser-download")

driver = webdriver.Firefox(options=opts)

driver.get("http://www.python.org")
driver.close()

或者这是完全错误的,这些选项不应该在代码中定义?

使用Selenium v4.20.0

python selenium-webdriver seleniummanager
1个回答
0
投票

所以我想强制浏览器下载的原因是因为我想避免整个“二进制文件不是 Firefox 可执行文件”错误,该错误似乎是由 snap 或其他东西本地安装的 Firefox 引起的。

我认为,强制下载会使其忽略任何本地安装的版本,从而避免该错误。

实际上通过 ENVv 设置选项似乎需要进行一些调整,谢谢 JeffC

将其添加到开头似乎可以避免该错误。

import os
os.environ["SE_FORCE_BROWSER_DOWNLOAD"] = "true"
os.environ["SE_CACHE_PATH"] = "./.cache"

我必须添加自定义缓存路径,因为没有它,它似乎不起作用。

老实说,为什么会发生这种情况对我来说没有多大意义。

因为缓存路径也会改变下载内容的位置。但假设启用了强制下载,相同的文件会下载到缓存中。在日志中,它分别引用默认缓存路径和自定义缓存路径作为

Browser path: ./.cache/firefox/linux64/125.0.3/firefox

但由于某种原因,当我离开默认路径时,就会发生错误,这意味着无论日志显示什么,它都使用本地快照安装的 firefox 安装。

当我使用自定义路径时,它实际上执行下载的版本。

非常困惑为什么会发生这种情况,但现在它可以工作了 ́\_(ツ)_/́

© www.soinside.com 2019 - 2024. All rights reserved.