Проблема с разрешением Selenium Webdriver в Linux сохраняется

1

Я хотел бы видеть возможности селена, который управляется скриптом python. Я загрузил исполняемый файл geckodriver и поместил его в какую-то директорию. Я использую linux, и я пытаюсь запустить приведенный ниже код через virtualenv:

from selenium import webdriver
path = '/home/devel-20/Desktop/devel/programs'
driver = webdriver.Firefox(executable_path=path)

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

Traceback (most recent call last):
  File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
  File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/home/devel-20/Desktop/devel/programs'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/devel-20/Desktop/devel/projects/r/shop/selenium_tests", line 5, in <module>
    driver = webdriver.Firefox(executable_path=path)
  File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 88, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'programs' executable may have wrong permissions.

Я смущен, потому что я запускаю это с пользователем под названием "devel-20". Это разрешения каталога программ:

drwxrwxr-x 4 devel-20 devel-20 4096 Sep 27 07:04 programs/

И это разрешения файла geckodriver:

-rwxrwxr-x  1 devel-20 devel-20 12184306 Sep 16 01:48 geckodriver*

Я не понимаю, почему эта проблема разрешений сохраняется.

Не могли бы вы дать мне несколько советов?

Заранее большое спасибо!

Теги:
selenium-webdriver

2 ответа

1
Лучший ответ

path вы говорите, неверен. Он должен обозначать двоичный файл geckodriver для использования в Firefox.

Альтернативный подход, учитывая ваш путь установки firefox, следующий:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

firefox_binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(firefox_binary=firefox_binary)
0

Спасибо за ответ. Теперь он отлично работает, используя этот код:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

firefox_binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(firefox_binary=firefox_binary)

Однако я добавил "geckodriver" в следующую папку:

/home/devel-20/Desktop/virtualenvs/restaurant/bin

Эта папка находится в $ PATH в этом virtualenv. Если он не добавлен в папку, о которой знает локальный $ PATH, будет известна проблема PATH selenium/geckodriver.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню