我正尝试使用默认用户使用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
我已经尝试过这里给出的所有解决方案:
Selenium chromedriver won't launch URL if another chrome instance is open
Selenium won't open a new URL in a new tab (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()
如果我在没有Chrome浏览器的情况下运行它,如果没有崩溃,请打开它的声音
答案 0 :(得分:1)
我也想使用默认的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')
如果您要使用默认的Chrome配置文件,而不是为Selenium创建的特定配置文件,请从代码中删除以下行。
options.add_argument("--profile-directory=Profile 1");
答案 1 :(得分:0)
此错误消息...
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
...表示 ChromeDriver 无法使用指定的{{来启动/产生新的浏览上下文,即 Chrome浏览器会话1}},因为它已经在使用中。
我能够在本地windows-10框中重现该错误,如下所示:
代码块:
user data directory
完成相关的追溯:
from selenium import webdriver
import getpass
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument(r"--user-data-dir=C:\Users\{}\AppData\Local\Google\Chrome\User Data".format(getpass.getuser()))
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://www.google.com/")
由于程序无法将缓存文件夹[18516:23156:0204/032227.883:ERROR:cache_util_win.cc(21)] Unable to move the cache: Access is denied. (0x5)
[18516:23156:0204/032227.898:ERROR:cache_util.cc(141)] Unable to move cache folder C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\ShaderCache\GPUCache to C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\ShaderCache\old_GPUCache_000
[18516:23156:0204/032227.898:ERROR:disk_cache.cc(178)] Unable to create cache
[18516:23156:0204/032227.898:ERROR:shader_disk_cache.cc(605)] Shader Cache Creation failed: -2
Opening in existing browser session.
Traceback (most recent call last):
.
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
移至..\ShaderCache\GPUCache
,因此错误堆栈跟踪显然抱怨访问被拒绝。因此,缓存的创建失败,随后 Shader Cache Creation 的创建失败。尽管这些问题引发了..\ShaderCache\old_GPUCache_000
,但可以在现有的 Chrome浏览器会话中强制打开新窗口。
现有Chrome浏览器会话的快照:
现有Chrome浏览器会话中新窗口的快照:
尽管仍引发错误,但新的Chrome窗口仍会启动,但仍与已打开的 Chrome 会话保持连接,但新窗口不能由WebDriver实例控制。 / p>
您需要注意以下几点:
InvalidArgumentException
设置为。.\ User Data \ Default 访问默认Chrome配置文件。