selenium.common.exceptions.SessionNotCreatedException: Сообщение: невозможно найти соответствующий набор возможностей с GeckoDriver, Selenium и Firefox - PullRequest
0 голосов
/ 24 августа 2018

Я разработал скрипт на python с селеном с помощью веб-драйвера firefox. Это отлично работает в моей машине. но если я выполняю тот же сценарий на другом компьютере, он выдает следующую ошибку.

Traceback (most recent call last):
  File "insurance_web_monitor.py", line 13, in <module>
    driver = Firefox(executable_path='geckodriver', firefox_options=options)
  File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\webdriver.py",
line 167, in __init__
    keep_alive=True)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 251, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 320, in execute
    self.error_handler.check_response(response)
  File "C:\Python34\lib\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

Вот мой код

import os
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


if __name__ == "__main__":
    options = Options()
    cap = DesiredCapabilities().FIREFOX
    cap["marionette"] = False
    options.add_argument('-headless')
    driver = Firefox(executable_path='geckodriver', firefox_options=options, capabilities=cap)
    wait = WebDriverWait(driver, timeout=10)
    driver.get('http://www.google.com')
    driver.save_screenshot(
        os.path.join(os.path.dirname(os.path.realpath(__file__)), os.getcwd(), 'screenshot1.png'))
    wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER)
    wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click()
    print(driver.page_source)
    driver.quit()

Конфигурации на моей машине:

Windows => 7 Professional 64-bit
Python => 3.4.4
Selenium => 3.14
Firefox => 61.0.2
geckodriver => 0.21.0

Конфигурации на другой машине:

Windows => 7 Professional 64-bit
Python => 3.4.4
Selenium => 3.14
Firefox => 61.0.2
geckodriver => 0.21.0

Да, каждая конфигурация точно такая же. Хотя это кажется глупым, оно не работает и мучает меня. Я что-то упускаю, чтобы рассмотреть между машинами? Заранее спасибо.

1 Ответ

0 голосов
/ 24 августа 2018

В соответствии с вашим блоком вопросов и кода при использовании следующей Конфигурации теста :

  • Selenium => 3,14
  • geckodriver => 0,21,0
  • Firefox => 61.0.2

Вы должны использовать возможность марионетка в обязательном порядке.Для этого либо:

  • Вы можете оставить возможность марионетка без изменений, так как по умолчанию marionette установлена ​​на True .
  • Вы также можете указать возможность марионетка следующим образом:

    cap = DesiredCapabilities().FIREFOX
    cap["marionette"] = True
    

Этот сценарий использования

Это сообщение об ошибке ...

selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

... означает, что GeckoDriver не смог инициировать / создать новый WebBrowser т.е. Firefox Browser сеанс.

Существует множество возможностей возникновения ошибки, которую вы видите, и может быть решена с помощью любого из следующих шагов, упомянутых ниже:

  • Когда вы работаете в ОС Windows вам нужно передать ключ executetable_path вместе со значением , содержащим:

    • Абсолютный путь GeckoDriver .
    • Абсолютный путь GeckoDriver должен быть указан в одинарных кавычкахи одну обратную косую черту вместе с необработанным (r) ключом.
    • Включите расширение GeckoDriver бинарного.
    • Ваша строка кода будет:

      driver = Firefox(executable_path=r'C:\path\to\geckodriver.exe', firefox_options=options, capabilities=cap)
      

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...