#python #selenium #selenium-webdriver #firefox
#python #селен #selenium-webdriver #firefox
Вопрос:
Я знаю, что этот вопрос задавался несколько раз, но выслушайте меня.
Пожалуйста, найдите версии, которые я использую ниже:
- Python 3.7.9
- Mozilla Firefox 81.0
- Селен 3.141.0
- Geckodriver 0.27.0
- Архитектура: x86-64
- Ядро: Linux 5.8.11-1-MANJARO
Согласно документам, требуемые версии для Geckodriver 0.27.0:
- Selenium > = 3.11
- Firefox > = 60
Я также убедился, что установил 64-разрядные версии Python, Selenium и Firefox. Мне кажется, что у меня есть все подходящие возможности.
Однако, если я выполню следующий код:
from selenium import webdriver
driver = webdriver.Firefox()
… Я все еще получаю следующую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
Я расскажу вам, что я пробовал:
- Используя
--headless
опцию:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)
- Используя
executable_path
путь:
driver = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
- Использование
FirefoxBinary
:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('/usr/lib/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
что дает мне другую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process
- Установка
marionette
наFalse
:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = False
driver=webdriver.Firefox(capabilities=caps)
что еще раз выдает мне другую ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 191, in __init__
self.binary, timeout)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/extension_connection.py", line 52, in __init__
self.binary.launch_browser(self.profile, timeout=timeout)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 73, in launch_browser
self._wait_until_connectable(timeout=timeout)
File "/home/shoaib/anaconda3/lib/python3.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 104, in _wait_until_connectable
"The browser appears to have exited "
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
Я действительно застрял.
Спасибо за вашу своевременную помощь! 😊
Комментарии:
1. Привет, если у вас возникли проблемы с вашими возможностями. Я бы посоветовал pip установить webdriver-manager в командной строке и просто использовать driver = webdriver. Firefox(GeckoDriverManager().install()). Затем импортируйте из webdriver_manager.firefox импортируйте GeckoDriverManager. Он должен обрабатывать все соответствующие возможности для вас.
2. Спасибо за ваш ответ! Я использовал webdriver-manager, но это не помогло. Он установил Geckodriver 0.27.0, и в итоге я получаю ту же ошибку: (