Selenium using Python - Geckodriver executable needs to be in PATH
Selenium, использующий исполняемый файл Python - Geckodriver, должен быть в PATH
Я просматриваю программу Sweigart по автоматизации скучных вещей с помощью Python text. Я использую IDLE и уже установил модуль Selenium и браузер Firefox.
Всякий раз, когда я пытался запустить функцию webdriver, я получаю это:
from selenium import webdriver browser = webdriver.Firefox()
Исключение:
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>> Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop if self.process is None: AttributeError: 'Service' object has no attribute 'process' Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0E08128>> Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop if self.process is None: AttributeError: 'Service' object has no attribute 'process' Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start stdout=self.log_file, stderr=self.log_file) File "C:\Python\Python35\lib\subprocess.py", line 947, in __init__ restore_signals, start_new_session) File "C:\Python\Python35\lib\subprocess.py", line 1224, in _execute_child startupinfo) FileNotFoundError: [WinError 2] The system cannot find the file specified
Во время обработки вышеупомянутого исключения произошло другое исключение:
Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> browser = webdriver.Firefox() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__ self.service.start() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start os.path.basename(self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
Я думаю, мне нужно задать путь для geckodriver, но я не уверен, как это сделать, так как же мне это сделать?
Переведено автоматически
Ответ 1
selenium.common.exceptions.Исключение WebDriverException: Сообщение: исполняемый файл 'geckodriver' должен находиться в PATH.
На самом деле, клиентские привязки Selenium пытаются найти geckodriver исполняемый файл из системы PATH. Вам нужно будет добавить каталог, содержащий исполняемый файл, в системный путь.
В системах Unix вы можете сделать следующее, чтобы добавить его в путь поиска вашей системы, если вы используете оболочку, совместимую с Bash:
В Windows вам нужно будет обновить системную переменную Path, чтобы добавить полный путь к каталогу исполняемого файла geckodriverвручную или из командной строки ** (не забудьте перезагрузить систему после добавления исполняемого файла geckodriver в system PATH, чтобы он вступил в силу) **. Принцип тот же, что и в Unix.
Теперь вы можете запускать свой код так же, как вы делаете, как показано ниже :-
from selenium import webdriver
browser = webdriver.Firefox()
selenium.common.exceptions.WebDriverException: Сообщение: ожидаемое расположение двоичного файла в браузере, но не удается найти двоичный файл в расположении по умолчанию, не предусмотрена возможность 'moz: firefoxOptions.binary' и не установлен флаг binary в командной строке
В исключении четко указано, что вы установили Firefox в другом месте, в то время как Selenium пытается найти Firefox и запустить из местоположения по умолчанию, но не может его найти. Вам необходимо явно указать двоичное местоположение Firefox, установленное для запуска Firefox, как показано ниже. :-
from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary