为什么当我用不同的配置文件打开多个浏览器时,我会得到一百万个错误?



我想尝试打开一个网站与不同的个人资料几乎立即。但是当我运行我的代码时,它每隔一段时间就能正常工作,当我使用。get (URL)时,它会关闭所有窗口,然后只在第一个浏览器上打开网站。

import threading
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

ANTI_LAG_DELAY = 0.5 # nwm
ALL_PROFILES = 10
URL = "http://www.google.com"
prefix_for_profiles = 'Testing'
chrome_exe_path = 'C:\Program Files\Google\Chrome\Application\chrome.exe'
chrome_profile_path = 'C:\Users\matsh\AppData\Local\Google\Chrome\User Data'
service = Service(ChromeDriverManager().install())
def open_browser_with_new_profile(number):
global browsers

options = webdriver.ChromeOptions()

options.add_argument(f'--user-data-dir={chrome_profile_path}')
options.add_argument(f'--profile-directory={prefix_for_profiles}asdadagafsdfwer{number}')
options.add_experimental_option('excludeSwitches', ['enable-logging'])

web = webdriver.Chrome(service=service, options=options)
web.get(URL)

threads = [
]
for number in range(ALL_PROFILES):
threads.append(threading.Thread(target=open_browser_with_new_profile, args=(number, )))
for thread in threads:
thread.start()
for thread in threads:
thread.join()

错误:

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

经过一些测试,我得出的结论是,如果您为每个web浏览器创建一个新的用户数据文件夹,一切都能正常工作。然而,这并不适合我。是否有解决方案不创建新的用户数据?

options = Options()
options.add_argument(r"--allow-profiles-outside-user-dir")
options.add_argument(r"enable-profile-shortcut-manager")
options.add_experimental_option('excludeSwitches', ['enable-logging'])
try:
options.add_argument(r"--user-data-dir=C:\Users\matsh\Desktop\BrowsersOpenner\User Data1")
options.add_argument(r"--profile-directory=Matthew")
web1 = webdriver.Chrome(service=Service('chromedriver.exe'), options=options)
web1.get(URL)
except:
pass
try:
options.add_argument(r"--user-data-dir=C:\Users\matsh\Desktop\BrowsersOpenner\User Data2")
options.add_argument(r"--profile-directory=Faker")
web2 = webdriver.Chrome(service=Service('chromedriver.exe'), options=options)
web2.get(URL)
except:
pass
try:
options.add_argument(r"--user-data-dir=C:\Users\matsh\Desktop\BrowsersOpenner\User Data3")
options.add_argument(r"--profile-directory=Someone")
web3 = webdriver.Chrome(service=Service('chromedriver.exe'), options=options)
web3.get(URL)
except:
pass

最新更新