Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium4 and Snap install of Firefox with Geckodriver_v31 times out

I recently upgraded lubuntu 22.04 and it wanted a few things to be installed from the snap repository. Firefox was one of them. Currently I'm using Selenium 4.1.3, Python 3.10 and Firefox 99.0.1 with latest geckodriver V31.0

I've been using this python3 code for my testing for some time but now it completely fails to start.

First of it failed to find a profile, so I forced something in there:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

options = Options()
options.add_argument("-profile /path2temp/")  # create profile
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.showWhenStarting",
                       False)
options.set_preference("browser.download.dir", "./data_export")
options.set_preference(
    "browser.helperApps.neverAsk.saveToDisk",
    "application/vnd.google-earth.kml+xml,application/x-zip-compressed,application/gpx+xml,text/csv"
)
options.set_preference("devtools.debugger.remote-enabled", True)
options.set_preference("devtools.debugger.prompt-connection", False)

browser = webdriver.Firefox(options=options, executable_path=r"/usr/bin/geckodriver")

url = 'https://cnn.com'
browser.get(url)

If firefox is already open, it fails to communicate with it. Normally in the past it would just open a new tab and start working. But now I get this error:

Firefox is already running, but is not responding. To use Firefox, you must first close the existing Firefox process, restart your device, or use a different profile.

If I let it initiate the application, it then times out after a lot of time with the following error (note, the /path2temp/ is a real path to a directory where it has permissions).

1651528082918   geckodriver     
INFO    Listening on 127.0.0.1:54985 1651528083062   mozrunner::runner       
INFO    Running command: "/snap/bin/firefox" "--marionette" "-profile /path2temp/" "--remote-debugging-port" "47927" "-- remote-allow-hosts" "localhost" "-no-remote" 
ATTENTION: default value of option mesa_glthread overridden by environment. 
ATTENTION: default value of option mesa_glthread overridden by environment. 
ATTENTION: default value of option mesa_glthread overridden by environment. 
ATTENTION: default value of option mesa_glthread overridden by environment. 
DevTools listening on ws://localhost:47927/devtools/browser/19a59834-6a4b-4d75-902c-06c36704d50e 
Exiting due to channel error. 
Exiting due to channel error. 
Exiting due to channel error. 
Exiting due to channel error. 
Exiting due to channel error.

Any ideas of what I could do to fix this problem?


Edit: I was able to at least get it to work when it initiates firefox by passing it to the current users profile located in the snap file structure /home/username/snap/firefox/common/.mozilla/firefox/wnrrbapq.default-release

But it's not an ideal behavior as I have to close the browser every time for testing.

like image 471
user6972 Avatar asked Oct 21 '25 12:10

user6972


1 Answers

Snap version of Firefox cannot write to /tmp location. Recommended workaround is to set TMPDIR environment variable to location that both geckodriver and firefox can write to e.g. $HOME/tmp.

More info in geckdriver 0.31.0 relaese notes and related github issue.

like image 119
Łukasz Korbel Avatar answered Oct 23 '25 07:10

Łukasz Korbel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!