我在以下代码中使用 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 中创建另一个配置文件 https://support.mozilla.org/en-US/kb/how-run-firefox-when-profile-missing -无法访问。
看起来 geckodriver 与 firefox 是一个完全不同的实例,并且它不使用相同的配置文件,我如何在使用 geckodriver 时绕过此错误并创建配置文件?
我也遇到过同样的问题。就我而言,我使用的是 ubuntu 22.04,问题是 Firefox 默认情况下是通过 snap 安装的。解决办法是卸载firefox并安装它而不使用snap。 这是执行此操作的链接。
TL/DR;设置自定义
TMPDIR
https://github.com/mozilla/geckodriver/issues/2010
找到启动 geckodriver 并崩溃的测试 例如
bundle exec rspec spec/features/sessions_spec.rb
当作业失败时,通过
杀死它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
我通过使用 snap 包中的
geckodriver
解决了 Ubuntu 22.04 上的问题。例如,我有目录 $HOME/bin
,位于 $PATH
中。从那里我
通过 将
firefox.geckodriver
链接至
$HOME/bin/geckodriver
$ ln -s /snap/bin/firefox.geckodriver geckodriver
可以通过
找到
firefox.geckodriver
的位置
$ whereis firefox.geckodriver
我刚刚重新安装了 Firefox,它很有帮助。
sudo snap remove firefox
sudo snap install firefox
当您运行代码时,请确保将 env variavle TMPDIR 设置为脚本用户有权读写的本地:
import os
os["TMPDIR"] = "path to ok location access read and write"