Веб-драйвер Firefox для Selenium на Python

#python #python-3.x #selenium #selenium-webdriver #selenium-firefoxdriver

#python #python-3.x #селен #selenium-webdriver #selenium-firefoxdriver

Вопрос:

Я использую selenium 3.0.1 с firefox 48 на OS X в Python 3. Я не могу заставить firefox работать как webdriver.

 from selenium import webdriver
driver = webdriver.Firefox()
  

выдает следующую ошибку:

 ---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-21-fd567e24185f> in <module>()
----> 1 driver = webdriver.Firefox()

/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/firefox/webdriver.py in __init__(self, firefox_profile, firefox_binary, timeout, capabilities, proxy, executable_path, firefox_options, log_path)
    133         if capabilities.get("marionette"):
    134             self.service = Service(executable_path, log_path=log_path)
--> 135             self.service.start()
    136
    137             capabilities.update(firefox_options.to_capabilities())

/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium/webdriver/common/service.py in start(self)
     62             self.process = subprocess.Popen(cmd, env=self.env,
     63                                             close_fds=platform.system() != 'Windows',
---> 64                                             stdout=self.log_file, stderr=self.log_file)
     65         except TypeError:
     66             raise

/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds)
    854                                 c2pread, c2pwrite,
    855                                 errread, errwrite,
--> 856                                 restore_signals, start_new_session)
    857         except:
    858             # Cleanup if the child failed starting.

/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
   1458                             else:
   1459                                 err_msg  = ': '   repr(orig_executable)
-> 1460                     raise child_exception_type(errno_num, err_msg)
   1461                 raise child_exception_type(err_msg)
   1462

OSError: [Errno 8] Exec format error
  

Ответ №1:

С selenium 3 или выше вам необходимо использовать драйвер gecko, чтобы Firefox заработал:

Java

 System.setProperty("webdriver.gecko.driver","path of geckodriver.exe");
WebDriver driver = new FirefoxDriver();
  

Python

 from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = 'C:UserstesttoolsFirefox'
driver = webdriver.Firefox(capabilities=firefox_capabilities)
  

Комментарии:

1. Я использую python на Mac, а не Java в Windows, есть идеи, как перевести?

Ответ №2:

  1. Убедитесь, что вы загружаете правильный tar.gz файл.
  2. После того, как вы перейдете сюда https://github.com/mozilla/geckodriver/releases — ищите macos.tar.gz версия geckodriver.
  3. Загрузите его на рабочий стол и откройте.
  4. Теперь выберите опцию «Перейти» в Finder, а затем «Перейти в папку». Введите /usr/local/bin, а затем вставьте geckodriver в корзину.