Selenium geckodriver:配置文件丢失:无法加载您的 Firefox 配置文件

Bla*_*ole 25 python selenium geckodriver

我在以下代码中使用 geckodriver:

import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
url = 'https://www.idealista.com/venta-viviendas/barcelona/eixample/la-dreta-de-l-eixample/?ordenado-por=fecha-publicacion-desc'
options = Options()
options.headless = False
driver = webdriver.Firefox(options=options, executable_path='/home/kevin/Desktop/Inmosoft/geckodriver')
driver.get(url)
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

但每次我尝试执行时都会出现此错误:

在此输入图像描述

我尝试按照此链接https://support.mozilla.org/en-US/kb/how-run-firefox-when-profile-missing-inaccessiblefirefox -P中的信息在 Firefox 中创建另一个配置文件。

看起来 geckodriver 与 firefox 是一个完全不同的实例,并且它不使用相同的配置文件,我如何在使用 geckodriver 时绕过此错误并创建配置文件?

小智 23

我曾经也有过一样的问题。就我而言,我使用的是 ubuntu 22.04,问题是 Firefox 默认情况下是通过 snap 安装的。解决办法是卸载firefox并安装它而不使用snap。这是执行此操作的链接。

删除 snap firefox 并将其安装为 .dev

  • 这不是解决办法。这是一种变通办法,完全违背了 snap 的目的。 (2认同)

Mar*_* B. 15

TL/DR;设置自定义TMPDIR https://github.com/mozilla/geckodriver/issues/2010

找到启动 geckodriver 并崩溃的测试,例如

bundle exec rspec spec/features/sessions_spec.rb
Run Code Online (Sandbox Code Playgroud)

当作业失败时,通过杀死它

ctrl+z # push job to background
kill %% # kill last job

# to kill all jobs do: sudo kill -9 `jobs -p -s`
Run Code Online (Sandbox Code Playgroud)

direnv通过如下方式设置自定义临时目录:

# .envrc

export TMPDIR="$HOME/tmp/some-project"
Run Code Online (Sandbox Code Playgroud)

您必须通过以下方式创建目录mkdir -p ~/tmp/some-project

  • 这应该是公认的答案。根本不需要卸载并重新安装 Firefox。请注意,“TMPDIR”必须位于用户主目录中,将其设置为“/tmp/blabla”不起作用。 (2认同)

小智 11

我通过使用 snap 包解决了 Ubuntu 22.04 上的问题geckodriver。例如,我有一个$HOME/bin位于$PATH. 从那里我链接firefox.geckodriver$HOME/bin/geckodriver

$ ln -s /snap/bin/firefox.geckodriver geckodriver
Run Code Online (Sandbox Code Playgroud)

可以firefox.geckodriver通过以下方式找到位置

$ whereis firefox.geckodriver
Run Code Online (Sandbox Code Playgroud)