🦊
Ubuntu上のSnap版Firefoxをgeckodriver(0.31.0)(Selenium)で動かす時の注意
はじめに
環境をUbuntuに移行してSeleniumでFirefoxを動かそうとしたら以下のエラーに遭遇しました。
Linuxを使い慣れていないせいもあってしばらく原因が分かりませんでした。
geckodriverのリリースノートに注意書きが書いてあるので、注意深い人は問題ないと思いますが、同じトラブルで時間を取られる人が減るように記事にしておきます。
環境
Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0]
selenium 4.2.0
geckodriver 0.31.0 (b617170ef491 2022-04-06 11:57 +0000)
Firefix 101.0.1(64 bit) Mozilla Firefox Snap for Ubuntu
対策
mozilla/geckodriverの0.31.0のリリースノートに原因が書いてあります。
Known problems
Firefox running in Linux Sandbox (e.g. Snap package):
Using geckodriver to launch Firefox inside a sandbox -- for example
a Firefox distribution using Snap or Flatpak -- can fail with a
"Profile not found" error if the sandbox restricts Firefox's ability
to access the system temporary directory. geckodriver uses the
temporary directory to store Firefox profiles created during the run.
This issue can be worked around by setting the TMPDIR environment
variable to a location that both Firefox and geckodriver have
read/write access to e.g.:
% mkdir $HOME/tmp
% TMPDIR=$HOME/tmp geckodriver
Alternatively, geckodriver may be used with a Firefox install that
is not packaged inside a sandboxed e.g. from mozilla.org.
要は、$TMPDIRで指定されたディレクトリにgeckodriverがアクセスできれば良いという事です。
つまり以下のようなコマンドを実行すれば動くようになります。
mkdir $HOME/tmp
export TMPDIR=$HOME/tmp
chmod 777 $TMPDIR
Discussion