получено исключение при инициализации chromedriver с помощью прокси-файла selenium, python - PullRequest
0 голосов
/ 02 мая 2018

Я хочу инициализировать Chrome WebDriver с прокси. Я нашел решение в этой ссылке . Я так и сделал, но получил вот такое исключение.

   driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/usr/lib/chromium-browser/chromedriver')
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/chrome/webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.35 (0),platform=Linux 4.4.0-122-generic x86_64)

Как мне нужно, чтобы создать файл, описанный в ссылке, вот мой background.js

var config = {
                mode: "fixed_servers",
                rules: {
                  singleProxy: {
                    scheme: "http",
                    host: "172.241.11.1", //modified it for privacy
                    port: parseInt(29842)
                  },
                  bypassList: ["foobar.com"]
                }
              };

        chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

        function callbackFn(details) {
            return {
                authCredentials: {
                    username: "aedqbb01",
                    password: "ac7DMjR"
                }
            };
        }

        chrome.webRequest.onAuthRequired.addListener(
                    callbackFn,
                    {urls: ["<all_urls>"]},
                    ['blocking']
        ); 

и manifest.json

{
            "version": "1.0.0",
            "manifest_version": 2,
            "name": "Chrome Proxy",
            "permissions": [
                "proxy",
                "tabs",
                "unlimitedStorage",
                "storage",
                "<all_urls>",
                "webRequest",
                "webRequestBlocking"
            ],
            "background": {
                "scripts": ["background.js"]
            },
            "minimum_chrome_version":"22.0.0"
        }

и вот моя программа на Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
chrome_options = Options()
chrome_options.add_argument("--headless")
#chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0")
chrome_options.add_extension("proxy.zip") #where is manifest.json and background.json 
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='/usr/lib/chromium-browser/chromedriver')
driver.get("https://www.google.com")
soup = BeautifulSoup(browser.page_source, 'lxml')

Код работает без прокси-файла.

Я скучал здесь. Пожалуйста, поправьте меня.

1 Ответ

0 голосов
/ 02 мая 2018

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally

... означает, что ChromeDriver не смог инициировать / создать новый WebBrowser , т.е. Браузер Chrome сеанс.

Ваша главная проблема - совместимость версии между двоичными файлами, которые вы используете следующим образом:

  • Вы используете chromedriver = 2,35
  • Примечания к выпуску chromedriver = 2,35 четко упоминает следующее:

Поддержка Chrome v62-64

  • Вы используете хром = 65,0
  • Примечания к выпуску ChromeDriver v2.38 четко упоминает следующее:

Поддержка Chrome v65-67

  • Ваш Клиент Selenium версия 3.11.0 .

Таким образом, существует явное несоответствие между Selenium Client v3.1.0 , ChromeDriver версии ( v2.35 ) и Chrome Browser версия ( v65.0 )

Решение

  • Обновление ChromeDriver до текущей ChromeDriver v2.38 уровень.
  • Обновление Chrome версии до текущих Chrome v66.x уровней. ( в соответствии с примечаниями к выпуску ChromeDriver v2.38 )
  • Очистите ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Используйте CCleaner , чтобы стереть все рутинные операции ОС до и после выполнения test Suite .
  • Если ваша базовая версия Web Client устарела, удалите ее через Revo Uninstaller и установите последнюю версию GA и выпущенную версию Web Клиент .
  • возьмите перезагрузку системы .
  • Выполните ваши @Test.
...