【问题标题】:Problems with chromedriver on Selenium with python: page never loads使用 python 在 Selenium 上使用 chromedriver 的问题:页面永远不会加载
【发布时间】:2020-11-27 03:20:18
【问题描述】:

我最初想让一个无头浏览器运行以动态解析网页。即使添加了等待以允许网站加载,我也遇到了一系列问题。注释掉无头选项后,我使用 xming 服务器作为网页的显示,以查看创建浏览器后它的实际外观。
这是我看到的截图: a new tab in chrome, and the browser seems to never get to the .get(). 我还收到一个弹出窗口,提示“Chrome 自动化扩展程序已崩溃...”
找了很多,有人建议不要以admin/root身份运行,所以我在运行之前没有使用sudo。这并没有改变消息。

下面是我的代码和终端输出:

options = webdriver.ChromeOptions()
# options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--lang=en_US')
options.add_argument('--user-data-dir')
options.add_argument("--disable-gpu")
# options.add_argument("--remote-debugging-port=9222")

browser = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
browser.get("http://www.google.com")

Ubuntu 终端:

回溯(最近一次通话最后一次):
文件“practice3.py”,第 40 行,在
browser = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
init
中的文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py”,第 76 行 RemoteWebDriver.初始化(
init
中的文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 157 行 self.start_session(功能,浏览器配置文件)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 252 行,在 start_session
响应 = self.execute(Command.NEW_SESSION, 参数)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,在执行
self.error_handler.check_response(response)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”,第 242 行,在 check_response
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:未知错误:DevToolsActivePort 文件不存在
(驱动信息:chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.4.0-18362-Microsoft x86_64)

还有:
Ubuntu 20.04 LTS
Selenium 版本 3.141.0
Chrome 版本 84.0.4147.105

~$ /usr/bin/chromedriver
Starting ChromeDriver 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706) on port 9515
Only local connections are allowed.

【问题讨论】:

  • 我会在没有选项的情况下运行,只是为了解决一些问题。似乎您在那里设置了一些通常与无头一起使用的选项,但您注释掉了无头部分。顺便说一句,你不需要在 get 之后等待...... Selenium 在调用 get 方法后已经等待页面加载(就绪状态)。此外,除非有特定原因,否则您不应使用“no-sandbox”标签。
  • “--user-data-dir”参数似乎也将其设置为空?你为什么要设置那个?
  • 我只是没有尝试任何选项,我得到“chrome 无法启动:崩溃”和“DevToolsActivePort 文件不存在”。当我只使用“--no-sandbox”运行时,浏览器会获取页面链接,但页面从不加载任何内容(无法与元素交互)。另外,我认为不需要大多数选项是正确的。当我真的迷路时,我从其他答案中随机收集了一些。谢谢!
  • 那里的 chromedriver 是一个非常旧的版本......(之前没有注意到)Eduardo 的回答似乎很到位。

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


【解决方案1】:

当 chromedriver 和 chrome 之间存在版本不匹配时,我看到很多 chrome 崩溃。由于您使用的是 Chrome 版本 84.0.4147.105,因此您应该只使用 ChromeDriver 84.0.4147.30 第二件事,您是从 IDE 启动脚本吗?如果是肯定的,那也是另一个常见的根本原因。最后,我将停止使用 XMimg,因为它在等式中添加了另一个变量。相反,无论您是否无头,都可以直接从 selenium 代码中截取屏幕截图。

【讨论】:

  • 我卸载并重新安装了您链接的那个版本的 chromedriver。目前我只使用无头作为选项,没有 xming。创建浏览器时,我仍然收到“DevToolsActivePort 文件不存在”,还有“chrome 无法启动:崩溃”和“从 /usr/bin/google-chrome 启动的进程不再运行”。有任何想法吗?不管怎样,谢谢!
  • 另外 /usr/bin/chromedriver 显示新版本,但仍然说“只允许本地连接”,不知道这是否重要。
  • 你使用的是WSL ubuntu镜像还是原生ubuntu/虚拟机系统?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多