python - WebDriverException:消息:未知错误:无法通过 Python 使用 Selenium ChromeDriver 和 Chrome 从未知错误中获取自动化扩展
问题描述
很简单。在 Mac 上,在 python 中使用 chromedriver。这是代码:
from selenium import webdriver
EXE_PATH = r'chromedriver'
driver = webdriver.Chrome(executable_path=EXE_PATH)
driver.set_window_size(1024, 768)
driver.get('file:///index.html')
但它总是在线崩溃:
driver.set_window_size(1024, 768)
它给出的错误:
selenium.common.exceptions.WebDriverException: Message: unknown error:
cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
(Session info: chrome=75.0.3770.80)
(Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.13.6 x86_64)
如您所见,我的 chrome 版本是 75.0.3770.80,我的 chromedriver 版本是 2.29.461585。我相信这些版本应该一起工作。这是版本不匹配问题还是其他问题?
解决方案
此错误消息...
selenium.common.exceptions.WebDriverException: Message: unknown error:
cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
...意味着ChromeDriver无法启动/生成新的WebBrowser ,即Chrome 浏览器会话。
您的主要问题是您使用的二进制文件版本之间的不兼容,如下所示:
- 您正在使用chromedriver=2.29
- chromedriver=2.29的发行说明清楚地提到了以下内容:
支持Chrome v56-58
- 您正在使用chrome=75.0
- ChromeDriver v75.0的发行说明清楚地提到了以下内容:
支持Chrome v75
因此ChromeDriver v2.29和Chrome 浏览器 v75.0之间存在明显的不匹配
解决方案
- 将ChromeDriver升级到ChromeDriver v2.75级别。
- 将Chrome版本保持在Chrome v75级别。(根据 ChromeDriver v2.75 发行说明)
- 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
- 如果您的基本Web 客户端版本太旧,请卸载它并安装最新的 GA 和已发布版本的Web 客户端。
推荐阅读
- c# - 通用参数对象处理程序的工厂
- c# - 在 Invoke 中使用 Foreach 循环
- codenameone - 在列表中使用 SpanButton 或 SpanLabel 会破坏向上滚动
- swift - 当列表中的最后一项是 HStack 时,应用程序崩溃
- rest - 当我使用spring boot和restful在application.properties文件中有属性时如何获取Json格式输出
- xml - 使用 Groovy 在 SOAP 响应中替换为“”
- php - 对 Google 的 DCM/DFA API 的未经授权的 HTTP 请求
- javascript - 悬停在 ul li 上时更改 body bgcolor。CSS
- javascript - 无法解决错误:`RangeError: Invalid time zone specified: undefined at new DateTimeFormat (native) at Date.toLocaleString (native)`
- go - 如何使用 *time.Time 在协议缓冲区的结构中声明