0

我开发了一个简单的程序,它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_dataopt.add_argument(fr'--user-data-dir="{user_data}"')即使这个变量正确存储user data path并且被定义为一个str类型:

真1

但是我还没有弄清楚,所以我来这里发布这个并寻找可以帮助我解决这个问题的反馈。

4

0 回答 0