【问题标题】:got exception while initialize chromedriver with proxy file selenium, python使用代理文件 selenium、python 初始化 chromedriver 时出现异常
【发布时间】:2018-05-02 10:45:30
【问题描述】:

我想用代理初始化 chrome webdriver。我在link 中找到了解决方案。我就是这样做的,但遇到了这样的异常。

   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')

代码在没有代理文件的情况下也能正常工作。

我确实错过了这里。请纠正我。

【问题讨论】:

  • Selenium Client / WebDriver / WebClient 变种和版本信息好吗?
  • selenium 版本 - 3.11., Google Chrome 版本 -65.0.3325.181 , Chromium 版本-65.0.3325.181, ChromeDriver 2.35 (0)

标签: python selenium selenium-webdriver webdriver selenium-chromedriver


【解决方案1】:

此错误消息...

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

...暗示 ChromeDriver 无法启动/生成新的 WebBrowserChrome 浏览器 会话。

您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

  • 您正在使用 chromedriver=2.35
  • chromedriver=2.35 的发行说明明确提及以下内容:

支持 Chrome v62-64

  • 您正在使用 chrome=65.0
  • ChromeDriver v2.38 的发行说明明确提及以下内容:

支持 Chrome v65-67

  • 您的 Selenium 客户端 版本是 3.11.0

所以 Selenium Client v3.1.0ChromeDriver 版本 (v2.35) 和 之间存在明显的不匹配Chrome 浏览器 版本 (v65.0)

解决方案

  • ChromeDriver 升级到当前的ChromeDriver v2.38 级别。
  • Chrome 版本升级到当前的 Chrome v66.x 级别。 (as per ChromeDriver v2.38 release notes)
  • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
  • 使用CCleaner 工具在执行测试套件之前和之后清除所有操作系统琐事。
  • 如果您的基础 Web Client 版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client
  • 进行系统重启
  • 执行您的@Test

【讨论】:

  • 将 chromedriver 更新为 (2.38.552522),Google Chrome 66.0.3359.139 再次出现错误 selenium.common.exceptions.WebDriverException:消息:未知错误:等待扩展背景页面加载失败:chrome- extension://nkfjhnfkkgabeghamphipepjpbcjkkfd/_generated_background_page.html 来自未知错误:找不到页面:chrome-extension://nkfjhnfkkgabeghamphipepjpbcjkkfd/_generated_background_page.html
  • @DipDeb 我已经解决了这个问题,因为您看到的错误是 selenium.common.exceptions.WebDriverException:消息:未知错误:Chrome 无法启动:异常退出。您能否针对您的新要求提出一个新问题?
猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-30
  • 2023-03-08
相关资源
最近更新 更多