【问题标题】:Python Selenium Chrome "user data directory is already in use"Python Selenium Chrome“用户数据目录已在使用中”
【发布时间】:2021-01-30 20:32:30
【问题描述】:

我正在尝试使用 selenium 在 python 中创建一个脚本,该脚本将打开一个网站并单击一个按钮。 问题是我必须先关闭 chrome,然后才能运行脚本,否则我会收到此错误:

Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir

有没有办法解决这个问题,所以我不必在每次运行脚本之前关闭 chrome?

我的代码:

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

PATH = "C:\Program Files (x86)\chromedriver.exe"

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:/Users/username/AppData/Local/Google/Chrome/User Data")
driver = webdriver.Chrome(executable_path=r'C:\Program Files (x86)\chromedriver.exe', chrome_options=options)
driver.get("https://disboard.org/sv/dashboard/servers")

link = driver.find_element_by_link_text("bump")
link.click()

【问题讨论】:

  • 只要您使用 Chrome 配置文件,您就必须关闭(某些)Chrome 浏览器。这可以是您的默认 chrome 浏览器,也可以是您可以制作的特定于网络抓取的浏览器。如果您不想关闭任何浏览器,我建议您使用 cookie 而不是用户数据。

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


【解决方案1】:

此错误消息...

invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir

...暗示用户数据目录 Default 已在使用中,因此ChromeDriver 无法访问该目录并启动/生成新的浏览上下文,即Chrome 浏览器 会话。


解决方案

在这种情况下,您可以按照以下步骤添加/创建新的Chrome Profile 并将其用于AUT(被测应用程序)

  • 打开谷歌浏览器,选择右上角的用户图标并点击添加

  • 输入新用户的名称,选择一个图标来帮助代表这个新帐户,以便以后更容易找到。然后,选择添加。

  • 此外,您会发现在 Default 旁边创建了一个新的子目录 Profile 1

现在,您可以使用 Profile 1 子目录如下:

options = Options()
options.add_argument("start-maximized")
options.add_argument("--profile-directory=Profile 1")
options.add_argument("--user-data-dir=C:/Users/user/AppData/Local/Google/Chrome/User Data")
driver = webdriver.Chrome(executable_path=r'C:\BrowserDrivers\chromedriver.exe', options=options)
driver.get("https://www.google.com/")

参考文献

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

    【解决方案2】:

    您的问题的原因是因为您添加了以下参数:

    options.add_argument("user-data-dir=C:/Users/A127538/AppData/Local/Google/Chrome/User Data")
    

    参数是指示 selenium 使用您的本地 chrome 配置文件。因此,由于您打开了 chrome 会话,因此在您关闭浏览器会话之前无法执行自动化。

    删除参数以执行独立的自动化测试配置文件。

    请参阅下面的问题中提供的修正代码

    from selenium import webdriver
    
    PATH = "C:\Program Files (x86)\chromedriver.exe"
    
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(executable_path=PATH, options=options)
    driver.get("https://disboard.org/sv/dashboard/servers")
    
    link = driver.find_element_by_link_text("bump")
    link.click()
    

    【讨论】:

      【解决方案3】:

      如果您可以同时使用 Chrome 配置文件和自动化配置文件对您的用例至关重要,那么这里有一个可能的解决方案:

      1. 按照this thread 中的说明安装第二个(旧版或新版)Chrome 版本

      2. 在您当前的 Chrome 中启用所需配置文件的同步。

      3. 使用第二版 Chrome 中所需的配置文件登录,并在那里启用同步。

      4. 在您的代码中使用与第二版 Chrome 兼容的 chrome 驱动程序。

      同步可能会出现一些问题,无法加载您需要的所有内容,但如果它是简单的事情,例如保存的密码,那么这应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-20
        • 2022-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        相关资源
        最近更新 更多