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

20

我在以下代码中使用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)

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

输入图像描述

我尝试按照此链接中的信息,通过使用firefox -P在Firefox中创建另一个配置文件。

看起来geckodriver是完全不同于Firefox的实例,它不使用相同的配置文件,我该如何绕过此错误并在使用geckodriver时创建配置文件呢?

4个回答

20

我也遇到过同样的问题。我的电脑使用的是Ubuntu 22.04版本,问题出在Firefox默认安装了Snap。解决方法是卸载Snap版本的Firefox并安装非Snap版本的Firefox。

可以通过以下链接完成这个操作:移除Snap版本的Firefox并安装.deb文件


这是那篇帖子的AskUbuntu解决方案:https://askubuntu.com/questions/1399383/ - a.t.
你确定在第四步中${distro_codename}是正确的吗? - LeMorse
2
这不是一个解决方案。这只是一个权宜之计,完全违背了 Snap 的初衷。 - NullVoxPopuli

10

我在Ubuntu 22.04上解决了问题,使用了来自snap软件包的geckodriver。例如,我有一个目录$HOME/bin,它在$PATH中。从那里,我将firefox.geckodriver链接到$HOME/bin/geckodriver

$ ln -s /snap/bin/firefox.geckodriver geckodriver

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

$ whereis firefox.geckodriver

这个帮我省了一个小时!你太棒了。 - Johnathan Irvin
1
这很有效!简单而且有效。 - henning
什么是奇迹?! - Beliaev Maksim
这只是正确的答案。 - undefined

10

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

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

bundle exec rspec spec/features/sessions_spec.rb

当作业失败时,通过kill命令终止它

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

# to kill all jobs do: sudo kill -9 `jobs -p -s`

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

# .envrc

export TMPDIR="$HOME/tmp/some-project"

您必须通过 mkdir -p ~/tmp/some-project 创建目录。

谢谢!这对我解决了问题。TMPDIR="./tmp" gradle run - pogopaule
2
这应该是被接受的答案。根本不需要卸载和重新安装Firefox。请注意,TMPDIR必须在用户主目录中,将其设置为/tmp/blabla是无效的。 - pieroxy
公正地说,我回答得有些不好,因为我描述了如何解决我遇到的问题,而不是用户提出的问题。解决方案可能是这样的:“编辑您的〜/ .bashrc 并添加 TMPDIR=$HOME/tmp”。 - Marlen T. B.
关于Ubuntu 22.04 LTS,这是正确的答案。重新安装APT版本的Firefox是不必要的。 详情请参见https://bugzilla.mozilla.org/show_bug.cgi?id=1766125和https://github.com/mozilla/geckodriver/releases/tag/v0.31.0 后续版本的geckodriver(0.32.0)甚至不需要设置TMPDIR,因为它们可以检测到snap沙盒并将临时配置文件放置在另一个合适的位置。 - Carsten Fuchs
1
他们现在为geckodriver添加了一个--profile-root参数: https://github.com/mozilla/geckodriver/issues/2010#issuecomment-1122739647 (对于那些手动运行geckodriver的人来说) - Nitish Parkar

0
我刚刚重新安装了Firefox,这确实有帮助。
sudo snap remove firefox
sudo snap install firefox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接