I'm trying to submit some requests on a web page from my web application. Because that web page is rather complex I decided not to send HTTP requests directly but rather use Selenium. I've deployed Selenium, firefox and geckodriver. All of that is running on a virtual Ubuntu.
geckodriver is located in bin folder of web app's venv:
-rwxr-xr-x 1 ralfeus ralfeus 7.0M Jul 28 23:45 bin/geckodriver*
The code to run it is here:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.options import Options
options = Options()
options.set_headless(headless=True)
browser = webdriver.Firefox(firefox_options=options)
When I run a script directly from a shell everything works fine. I can create an instance of webdriver, can open a page.
uWSGI application runs as 'www-data' user When I run it as a part of uWSGI I'm getting an error:
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: browser = webdriver.Firefox(firefox_options=options, service_log_path='./firefox.log')
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: File "/var/www/order/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: keep_alive=True)
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: File "/var/www/order/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: self.start_session(capabilities, browser_profile)
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: File "/var/www/order/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: response = self.execute(Command.NEW_SESSION, parameters)
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: File "/var/www/order/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: self.error_handler.check_response(response)
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: File "/var/www/order/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: raise exception_class(message, screen, stacktrace)
Oct 07 08:58:28 web-1.contaboserver.net uwsgi[17558]: selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
As same code works fine from a shell, I've ruled out path and binaries issues. What else could it be?