2016-10-30 5 views
1

Я новичок в программировании, сделал несколько курсов python и пытаюсь применить то, что я изучал.Проблемы с каналом с Selenium и Geckodriver

Я бегу Macos Sierra и python2 и 3 установлены в моей машине, даже если я просто хотел использовать python3, но мой предыдущий курс проинструктировал меня, чтобы начать с python2, что я не знаю если это было плохо.

Во всяком случае, принимая Автоматизировать скучный материал с курсом Python (который использует python3) Я столкнулся с этим кодом:

#! python3 
from selenium import webdriver 
browser = webdriver.Firefox() 

и получил следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 64, in start 
    stdout=self.log_file, stderr=self.log_file) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 947, in __init__ 
    restore_signals, start_new_session) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1551, in _execute_child 
    raise child_exception_type(errno_num, err_msg) 
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/Users/Alex/Anaconda/Templates/selenium_firefox.py", line 3, in <module> 
    browser = webdriver.Firefox() 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 135, in __init__ 
    self.service.start() 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/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. 

Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x1029777f0>> 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 163, in __del__ 
    self.stop() 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/common/service.py", line 135, in stop 
    if self.process is None: 
AttributeError: 'Service' object has no attribute 'process' 
[Finished in 0.501s] 

Я нашел Ответ, который, кажется, решает мою проблему здесь: Selenium using Python - Geckodriver executable needs to be in PATH

Но я не могу понять, как манипулировать PATH на моем компьютере или как организовать мои файлы таким образом, чтобы компьютер работал.

я выполнил следующий код на моем терминале (как указано в другом запросе): exportPATH = $ PATH:/путь/к/каталог/из/исполняемым/скачивании/в/предыдущий/шаг

Но это не имеет никакого смысла для меня и не работает. Я также попытался взять файл Geckodriver из загрузок (где он был изначально) и поместить его в папку Anaconda.

В любом случае, я уверен, что проблема в том, что я действительно не знаю, как компьютер сам организуется, поэтому не может правильно адресовать код.

Поэтому, Я хотел бы попросить решение для моего конкретного случая и справочного текста, учебника, видео или всего, что я мог бы использовать, чтобы лучше понять, как все это работает (я до сих пор не нашел ничего хорошего материал по этому вопросу).

Заранее благодарен!

+0

Это может вам помочь. [Gekodriver executable должен быть в пути] (http://stackoverflow.com/questions/40048940/geckodriver-executable-needs-to-be-in-path) –

+0

Ответ на этот вопрос Другая тема http://stackoverflow.com/questions/40388503/how-to-put-geckodriver-into-path?rq=1 –

ответ

4

Я имел ту же ошибку я понял это, вот шаги:

Mac:

  1. Скачать geckodriver для MacOS из следующей ссылке:

    https://github.com/mozilla/geckodriver/releases

  2. Перейти к Terminal и введите следующую команду, чтобы узнать путь Python:

    echo $PATH 
    

    Обычно путь будет /USR/местные/бен.

  3. Скопируйте geckodriver из папки загрузки в пути, который вы получили на шаге 2. Используйте следующую команду:

    cp downloads /usr/local/bin 
    

Примечание: Иногда, делая шаг 3, вы можете получить разрешения отказано ошибку, Чтобы устранить эту ошибку, вы должны использовать Sudo перед командой, как так:

sudo cp downloads /usr/local/bin 

После этого вам нужно будет ввести пароль своей учетной записи. FYI, sudo заставляет вас запускать команды как администратор.

1

Ссылка, которую вы нашли для UNIX, должна работать. У вас есть свободное пространство между export и PATH? У вашей копии нет места между ними, чтобы это не сработало. Если это то же самое в UNIX, как и в Windows, для geckodriver в пути Python, то вы можете попробовать:

cp geckodriver.exe \path\to\Python\

Затем geckodriver хранится в базовом пути Python и, таким образом, автоматически инициализируется.

1

Вы всегда можете жёстко расположение водолаза:

SUDO нано /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.ру

def __init__(self, firefox_profile=None, firefox_binary=None, 
     timeout=30, capabilities=None, proxy=None, 
     executable_path="/PATH/gecko/geckodriver",      
firefox_options=None, 
     log_path="/PATH/geckodriver.log"):