InvalidArgumentException:消息:无效参数:使用 ChromeDriver Selenium 启动 Chrome 时,用户数据目录已在使用错误

BiT*_*23b 6 python selenium google-chrome selenium-chromedriver chrome-profile

我正在尝试使用默认用户使用 selenium python 库打开网页,脚本使用默认用户至关重要,但如果我的 chrome 浏览器已经打开脚本崩溃并给我这个错误:

selenium.common.exceptions.InvalidArgumentException: 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
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这里给出的所有解决方案:

如果打开另一个 chrome 实例,Selenium chromedriver 将不会启动 URL

Selenium 不会在新选项卡中打开新 URL(Python 和 Chrome)

并阅读旧版 chromedriver 版本中存在错误,但已在 chrome 74(我正在使用)中修复:https : //github.com/SeleniumHQ/docker-selenium/issues/741

from selenium import webdriver
import time
from getpass import getuser

def run():
    # Chrome driver path
    chromedriver = r'C:\Users\user1\Downloads\chromedriver_win32\chromedriver_new.exe'

    # Get chrome webdriver options and set open the browser as headless
    chrome_options = webdriver.ChromeOptions()
    #chrome_options.add_argument("--headless")

    # Fix for selenium Issue 2907
    #chrome_options.add_argument('--log-level=3')
    #chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])

    # Load current user default profile
    current_user = getuser()
    chrome_options.add_argument(
        r"--user-data-dir=C:\Users\{}\AppData\Local\Google\Chrome\User Data".format(current_user))

    # didable "Chrome is being controled by an automated test software"
    chrome_options.add_argument('disable-infobars')

    # get Chrome to stay open
    chrome_options.add_experimental_option("detach", True)

    # open browser with options and driver
    driver = webdriver.Chrome(options=chrome_options, executable_path=chromedriver)
    driver.get(r'https://www.youtube.com/watch?v=dQw4w9WgXcQ')



if __name__ == '__main__':
    run()
Run Code Online (Sandbox Code Playgroud)

如果我在没有 chrome 浏览器的情况下运行它,打开它就好了,否则它会崩溃

Sam*_*meh 0

我还想使用我的默认 Chrome 配置文件运行 Selenium,但我遇到了同样的问题。我通过将 UserData 文件夹复制到另一个位置然后使用新位置来解决这个问题。这是我的完整代码:

from selenium import webdriver
options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Users\\myusername\\Desktop\\User Data")
options.add_argument("--profile-directory=Profile 1");
browser = webdriver.Chrome(options=options) 
browser.get('https://www.google.com')
Run Code Online (Sandbox Code Playgroud)

如果您想使用默认的 Chrome 配置文件而不是为 Selenium 创建的特定配置文件,请从代码中删除以下行。

options.add_argument("--profile-directory=Profile 1");
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2192 次

最近记录:

5 年,7 月 前