«Не удалось найти соответствующий набор возможностей» с помощью selenium

#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, и в итоге я получаю ту же ошибку: (