Selenium с използване на Python - Изпълнимият файл на Geckodriver трябва да е в PATH
Аз съм нов в програмирането и започнах с Python
преди около 2 месеца и преглеждам текста на Sweigart's Automate the Boring Stuff with Python. Използвам 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
During handling of the above exception, another exception occurred:
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
, но не съм сигурен как, така че може ли някой да ми каже как да направя това?
380
3
Преди всичко ще трябва да изтеглите най-новия изпълним файл geckodriver оттук, за да стартирате най-новия firefox, използвайки selenium
Всъщност клиентските връзки на Selenium се опитват да намерят изпълнимия файл
geckodriver
от системнияPATH
. Ще трябва да добавите директорията, съдържаща изпълнимия файл, към системния път.На Unix системите можете да направите следното, за да я добавите към пътя за търсене на вашата система, ако използвате bash-съвместима обвивка:
В Windows ще трябва да актуализирате системната променлива Path, за да добавите пълния път до директорията на изпълнимия geckodriver ръчно или от командния ред(не забравяйте да рестартирате системата си, след като добавите изпълнимия geckodriver в системния PATH, за да влезе в сила). Принципът е същият като при Unix.
Сега можете да стартирате кода си по същия начин, както го правите, както е показано по-долу :-
Изключението ясно заявява, че сте инсталирали firefox на друго място, докато Selenium се опитва да намери firefox и да го стартира от мястото по подразбиране, но не може да го намери. Трябва да предоставите изрично двоичното местоположение на инсталирания firefox, за да стартирате firefox, както е посочено по-долу :-
тези стъпки са решени за мен на Ubuntu Firefox 50.
Изтегляне на geckodriver
Копирайте geckodriver в /usr/local/bin
НЕ е необходимо да добавяте
Наистина е доста тъжно, че нито една от книгите, публикувани за Selenium/Python, и повечето от коментарите по този въпрос чрез Google не обясняват ясно логиката на пътя, за да настроите това на Mac (всичко е Windows!!!!). Всички youtubes се спират на "след като" сте настроили патинга (според мен това е евтиният изход!). Така че, за вас, прекрасните потребители на Mac, използвайте следното, за да редактирате файловете с пътища на bash:
>$touch ~/.bash_profile; open ~/.bash_profile
След това добавете път по следния начин.... *# Задаване на PATH за geckodriver PATH="/usr/bin/geckodriver:${PATH}" export PATH
Задаване на PATH за Selenium firefox
PATH="~/Users/yourNamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/firefox/:${PATH}" export PATH
Задаване на PATH за изпълнимия файл на драйвера на Firefox
PATH="/Users/yournamePATH/VEnvPythonInterpreter/lib/python2.7/site-packages/selenium/webdriver/common/service.py:${PATH}" export PATH*
Това работи за мен. Притеснението ми е кога общността на Selenium Windows ще започне да играе истинската игра и ще включи нас, потребителите на Mac, в членството си в техния арогантен клуб.