Python Скрипт с Selenium: поднять child_exception OSError: [Errno 13] В доступе отказано - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь создать скрипт Python, используя Selenium для входа на сайт; к сожалению, я не могу запустить даже базовый c скрипт, так как сталкиваюсь с постоянными проблемами конфигурации.

Сервер, для которого я создаю этот скрипт и на котором также тестирую, работает следующим образом:

  1. Ubuntu 16.04.6 LTS
  2. [Python] 2.7.12 (по умолчанию, 8 октября 2019, 14:14:10) [G CC 5.4.0 20160609]

Этот сценарий будет запускаться на целевой платформе вместе с другими сценариями; поэтому моя гибкость при обновлении с Python 2.7. * до 3. * ограничена. Что касается вопросов, которые я видел; На самом деле я попробовал некоторые альтернативы Selenium с некоторым успехом, однако я вернулся в Selenium, учитывая, что он кажется более надежным, чем альтернативы.

В Интернете есть множество ресурсов, посвященных настройке и созданию Python Сценарий с использованием Selenium в качестве, которое я желаю. Я обнаружил, что сообщения об ошибках, которые я вижу, ни в коем случае не являются уникальными; скорее есть многочисленные статьи, обращающиеся к ним. Пример кода, который я тестирую, представляет собой слегка измененный пример со следующего веб-сайта ( ссылка ). Вот пример кода:

#!/usr/bin/env python

import unittest
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary


class TestUbuntuHomepage(unittest.TestCase):

    def setUp(self):
        firefox_binary = FirefoxBinary('/etc/firefox')
        capabilities = DesiredCapabilities().FIREFOX
        capabilities["marionette"] = False
        self.browser = webdriver.Firefox(capabilities=capabilities,
                               firefox_binary=firefox_binary,
                               log_path='/tmp/geckodriver.log')

    def testTitle(self):
        self.browser.get('http://www.ubuntu.com/')
        self.assertIn('Ubuntu', self.browser.title)

    def tearDown(self):
        self.browser.quit()


if __name__ == '__main__':
    unittest.main(verbosity=2)

Параметры, добавленные в функцию webdriver.Firefox(), устраняют некоторые существующие проблемы, с которыми я столкнулся. Короче, последняя ошибка, которую я получаю, - OSError: [Errno 13] Permission denied. При запуске сценария я получаю следующий вывод:

testTitle (__main__.TestUbuntuHomepage) ... ERROR

======================================================================
ERROR: testTitle (__main__.TestUbuntuHomepage)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./selenium-sample.py", line 17, in setUp
    log_path='/tmp/geckodriver.log')
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 191, in __init__
    self.binary, timeout)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 52, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 72, in launch_browser
    self._start_from_profile_path(self.profile.path)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 95, in _start_from_profile_path
    env=self._firefox_env)
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
OSError: [Errno 13] Permission denied

----------------------------------------------------------------------
Ran 1 test in 0.040s

Имеются статьи, которые, как мне кажется, решают эту ошибку, такие как следующие с этого сайта:

IOError: [Errno 13] Отказано в доступе: 'geckodriver.log при запуске Python / Selenium

Я внес изменения в скрипт выше из полезных заметок в этой статье, однако я все еще сталкиваюсь с этим конкретным сообщением об ошибке ; любая помощь приветствуется, как и любые вопросы. Я надеюсь, что я не пропустил никакой соответствующей информации; Python не сильный набор.

...