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