1

Selenium 不会加载我的默认 Chrome 配置文件,我不知道为什么。我已经尝试过配置文件 1 和默认配置文件,但出现相同的错误(如下)。我已通过任务管理器确认所有 Chrome 窗口在运行此代码之前都已关闭。有什么想法吗?

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
import os
os.system("taskkill /f /im geckodriver.exe /T")
os.system("taskkill /f /im chromedriver.exe /T")
os.system("taskkill /f /im IEDriverServer.exe /T")
os.system("taskkill /f /im chrome.exe /T")

driver2 = r"C:\Users\xxx\.wdm\drivers\chromedriver\87.0.4280.20\win32\chromedriver.exe"
options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Users\xxx\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 1")
driver = webdriver.Chrome(executable_path=driver2, chrome_options=options)
driver.get("https://www.google.co.in")

Traceback (most recent call last):
  File "C:\Users\xxx\OneDrive\Python\pyReportRun.py", line 16, in <module>
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
  File "C:\Python38\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python38\lib\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: Could not remove old devtools port file. Perhaps the given user-data-dir at C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Profile 1 is still attached to a running Chrome or Chromium process

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

[1]:https://i.stack.imgur.com/qf1Rr.png

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

2
chrom_options.add_argument("user-data-dir=C:\\Users\robert.car\\AppData\\Local\\Google\\Chrome\\User Data")

chrom_options.add_argument("profile-directory=Profile 1")

user-data-dir 将 profile 视为 default ,您不必指定 . 如果它是其他东西通过 profile-directory 参数指定它

创建配置文件的步骤:

打开:地址栏中的 chrome://version

在此处输入图像描述

将用户 dir 文件夹完全复制到例如 c:\tmp\newdir

打开复制的用户数据(newdir)并搜索名为 Default 的文件夹。这是配置文件文件夹。

默认文件夹重命名为“配置文件 1”

现在使用这个:

chrom_options.add_argument("user-data-dir=c:\\tmp\\newdir")

chrom_options.add_argument("profile-directory=Profile 1")
于 2020-12-01T05:41:59.093 回答
0

此错误消息...

selenium.common.exceptions.WebDriverException: Message: unknown error: Could not remove old devtools port file. Perhaps the given user-data-dir at C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Profile 1 is still attached to a running Chrome or Chromium process

...意味着ChromeDriver无法启动/产生新的浏览上下文,即Chrome 浏览器会话,user-data-dir因为您传递了一个参数仍然附加到正在运行的Chrome 浏览上下文


细节

使用默认 Chrome 配置文件进行测试自动化将违反所有最佳做法,因为默认 Chrome 配置文件可能包含以下任一/所有内容:

  • 浏览器设置
  • 扩展
  • 书签
  • 应用
  • 保存的密码
  • 浏览记录
  • ETC

因此,默认 Chrome 配置文件可能不符合您的测试规范,并且在尝试加载时可能偶尔会引发异常。因此,您应该始终使用自定义的 Chrome 配置文件

您可以在如何通过 Selenium 的 --user-data-dir 参数打开 Chrome 配置文件中找到详细讨论

如果您的用例仍然保证使用默认 Chrome 配置文件,您需要确保所有都已停止/终止,并且您可以按照下面提到的详细信息进行操作。

在这里您可以找到关于 Selenium 的详细讨论:如何停止 geckodriver 进程影响 PC 内存,而不调用 driver.quit()?


默认 Chrome 配置文件的位置

根据如何在 Windows、Mac 和 Linux 上查找 Chrome 配置文件文件夹中的文档, Chrome 默认配置文件文件夹的位置因您的平台而异。地点是:

  • Windows 7、8.1 和 10C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X 埃尔卡皮坦Users/<username>/Library/Application Support/Google/Chrome/Default
  • Linux/home/<username>/.config/google-chrome/default

您需要替换<username>为您的用户文件夹的名称。默认配置文件文件夹简单地命名为 Default(或 Linux 中的 default)。但是,如果您创建了其他配置文件,它们的文件夹名称就不那么明显了。创建配置文件时分配给配置文件的名称显示在 Chrome 窗口标题栏右侧的名称按钮上。不幸的是,Chrome 在相关配置文件文件夹上使用的名称是一个通用的编号名称,例如Profile 3.

如果您需要知道任何Chrome 配置文件的文件夹名称,您只需chrome://version在地址栏中访问并按 Enter。

快照:

默认ChromeProfile

显示Profile Path当前配置文件的位置。例如,我的默认配置文件在我的Windows 10系统中的位置是C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default. 您可以选择路径并将其复制并粘贴到 Windows 中的文件资源管理器、OS X上的 Finder 或 Linux 中的Nautilus等文件管理器中以访问该文件夹。


示例代码 (Windows 10)

最后,要访问默认 Chrome 配置文件,您可以使用以下基于Python的解决方案:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\username\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")

您可以在如何在 Selenium Webdriver Python 3 中使用 Chrome 配置文件中找到详细讨论

于 2020-12-01T21:43:01.057 回答