WebDriverException:消息:未知错误:使用ChromeDriver Chrome和user-data-dir的DevToolsActivePort文件不存在错误

时间:2020-05-22 15:11:35

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

我试图访问一些使用不同帐户的网站,并避免每次计划为每个网站创建用户个人资料时都登录。我将Python应用程序托管在Ubuntu服务器上,因此必须无头运行它,并且还需要移动仿真。这是我要执行的操作的一个示例:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_experimental_option("mobileEmulation", {"deviceName": "Pixel 2"})
options.add_argument("user-data-dir=account-data/account_3")
chromedriver = "./webdrivers/chrome"
driver = webdriver.Chrome(executable_path=chromedriver, options=options)

print("START SEARCH")
# Google is an example, but nothing works
driver.get("https://www.google.com")
print("FINISHED")

我看到START SEARCH,但没有看到FINISHED。但是,当我评论user-data-dir选项时,一切正常。奇怪的是,这是在Ubuntu 20 LTS服务器上发生的,但是在我的Mac上却没有问题。


在尝试获取此问题的版本时,突然出现无法使用的版本开始给我以下提示:

Traceback (most recent call last):
  File "seleniumtest.py", line 12, in <module>
    driver = webdriver.Chrome(executable_path=chromedriver, options=options)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 5.4.0-1009-kvm x86_64)

在发生此错误之前,我真正要做的唯一事情就是删除所有/tmp/.org.chromium.Chromium.*文件,但这些文件只能是临时文件,并且在我未指定{{ 1}}标志。

3 个答案:

答案 0 :(得分:0)

我在您的代码块中看不到任何重大问题。

但是 chromedriver=2.41.578700 很老了,还很古老。


解决方案

确保:

  • 已升级到当前级别Version 3.141.59
  • ChromeDriver 已更新为当前的ChromeDriver v83.0级别。
  • Chrome 已更新为当前的 Chrome版本83.0 级别。 (根据ChromeDriver v83.0 release notes
  • 如果您的基本 Web客户端版本太旧,则将其卸载并安装最新版本的 Web客户端 GA。
  • 进行系统重启
  • 非root用户用户的身份执行@Test
  • 始终在driver.quit()方法内调用tearDown(){},以优雅地关闭和销毁 WebDriver Web Client 实例。

答案 1 :(得分:0)

首先尝试下载chromedriver并进行安装,而不要尝试所有代码。然后将该路径放入下面的行中。

请记住,当您执行以下脚本时,将打开一个新的chrome窗口,但不要关闭它。

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'C:\\Users\\sonal\\.wdm\\drivers\\chromedriver\\80.0.3987.106\\win32\\chromedriver.exe')
driver.get("https://www.google.com")

答案 2 :(得分:0)

原来的问题是我没有在user-data-dir标志中放置绝对路径。

from selenium import webdriver
import os

options = webdriver.ChromeOptions()
path = os.path.abspath("account-data/account_3")
options.add_argument("user-data-dir=" + path)
# other options...
chromedriver = "./webdrivers/chrome"
driver = webdriver.Chrome(executable_path=chromedriver, options=options)

# do stuff...
driver.close()