为什么我的 spyder 内核在 Python 程序上使用我的默认配置文件打开 chrome 浏览器实例后崩溃?硒相关

Why is my spyder kernel crashing after opening a chrome browser instance with my default profile on a Python program? Selenium related

经过今天非常详尽的研究,我设法理解并制作了一个简单的程序,它将使用 selenium 模块打开一个 chrome window 我的用户数据和默认配置文件,此处:

import tkinter as tk 
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

root = tk.Tk()
root.geometry('500x400') #resolution
root.title("Bulkdozer") #Name of this program
root.attributes('-topmost', True) #keep the program's window top-most

opt = Options() #selenium options
opt.add_argument("--user-data-dir="+r"C:\Users\ResetStoreX\AppData\Local\Google\Chrome\User Data\Default") #PATH profile
opt.add_argument('--profile-directory=Default') #Profile to use
s = Service('C:\Program Files\Google\Chrome\Application\chrome.exe')

def open_chrome_profile():
    driver = webdriver.Chrome(service=s, options=opt) 
    driver.get('https://opensea.io/asset/create')
    
#####BUTTON ZONE#######
open_browser = tk.Button(root, width=20,  text="Open OpenSea Tab", command=open_chrome_profile) #executes the function when clicked
open_browser.grid(row=22, column=1)
#####BUTTON ZONE END#######
root.mainloop()

问题是它根本没有按预期工作:

首先,单击 Open OpenSea Tab 按钮后,程序会打开一个 chrome window,其中包含我的用户数据和默认配置文件,但不会转到 link 提供 ('https://opensea.io/asset/create').

其次,它还会使 GUI 崩溃而不会抛出任何错误,更糟糕的是,它还会使 Spyder 内核崩溃!

我很困惑,在我看来我并没有在这里做任何违法的事情,但是如果有人能解释我应该如何解决这个问题,我将不胜感激?

我按照 this other question 的建议成功构建了上面的代码,但我没想到最终会遇到像这样的奇怪问题...

您需要注意以下几点:

  • 您需要从配置文件 PATH 中删除 Default。所以实际上你的代码行将是:

    opt.add_argument("--user-data-dir=r'C:\Users\ResetStoreX\AppData\Local\Google\Chrome\User Data') #PATH profile
    

You can find a couple of relevant detailed discussions in:

  • 需要在Service()中传递的绝对路径,如下:

    s = Service('C:\path\to\chromedriver.exe')