我开发了一个简单的程序,它Chrome Driver
使用用户执行一个实例--user-data-dir
,--profile-directory
在执行 chrome 驱动程序之前向用户询问这些参数:
import os
import pandas as pd
if os.name == 'nt': # Let's add some colors for the lulz
from ctypes import windll
k = windll.kernel32
k.SetConsoleMode(k.GetStdHandle(-11), 7)
import time
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
opt = Options() #the variable that will store the selenium options
print('\033[34;1;4mHi Sailor! I am "Bulk-dozer", a bulk uploader built by @NoahVerner\033[0m')
print('\n')
print('\033[34;1;4mMy aim is to automate the uploading of your NFT collection to OpenSea =)\033[0m')
print('\n')
def check_path(infile):
return os.path.exists(infile)
profile_path = input('Introduce YOUR profile path:')
while True:
if check_path(profile_path) == False:
print('\033[31;1;4mThis PATH is invalid!\033[0m')
profile_path = input('Please type the RIGHT PROFILE PATH:')
elif check_path(profile_path) == True:
if r'\Google\Chrome\User Data' in profile_path:
if profile_path.split("User Data\\",1)[1] != "":
user_data = profile_path.replace(re.split('\\bUser Data\\b', profile_path)[-1], "") #get the user data path
profile_directory = profile_path.split("User Data\\",1)[1] #get the profile directory
print('\n')
break
else:
profile_path = input('\033[33;1;4mYou forgot to add the PROFILE FOLDER in the profile path, try again:\033[0m ')
else:
profile_path = input('\033[33;1;4mThe path provided does not seem to be the right one, try again:\033[0m ')
opt.add_argument(fr'--user-data-dir="{user_data}"') #Add the user data path as an argument in selenium Options
opt.add_argument(f'--profile-directory={profile_directory}') #Add the profile directory as an argument in selenium Options
s = Service('C:/Users/ResetStoreX/AppData/Local/Programs/Python/Python39/Scripts/chromedriver.exe')
driver = webdriver.Chrome(service=s, options=opt)
driver.get('https://opensea.io/login?referrer=%2Faccount')
我使用我的配置文件路径对其进行了测试:C:\Users\ResetStoreX\AppData\Local\Google\Chrome\User Data\Default
并收到以下错误:
WebDriverException:未知错误:无法删除旧的 devtools 端口文件。可能“C:\Users\ResetStoreX\AppData\Local\Google\Chrome\User Data”中给定的用户数据目录仍附加到正在运行的 Chrome 或 Chromium 进程
然后,我快速搜索了一个命令来杀死 Windows 上的所有 chrome/chromedriver 进程并找到它,我立即打开cmd
并输入以下内容:
taskkill /F /IM chrome.exe
并得到:
错误:找不到进程“chrome.exe”。
我还输入了:
taskkill /F /IM chromedriver.exe
并且还得到了:
错误:找不到进程“chromedriver.exe”。
上面的意思是在执行这个程序的那一刻不可能有任何 chrome 实例使用该user-data-dir
路径,我什至重新启动了我的电脑并作为第一件事运行了这个程序并得到了同样的WebDriverException: unknown error
结果,这很奇怪。
所以我认为最终问题必须与调用方式有关 user_data
,opt.add_argument(fr'--user-data-dir="{user_data}"')
即使这个变量正确存储user data path
并且被定义为一个str
类型:
但是我还没有弄清楚,所以我来这里发布这个并寻找可以帮助我解决这个问题的反馈。