【问题标题】:How to load default profile with Selenium when Chrome is already open?当 Chrome 已经打开时,如何使用 Selenium 加载默认配置文件?
【发布时间】:2022-01-12 10:23:11
【问题描述】:

以下有关此答案的信息 (How to load default profile in Chrome using Python Selenium Webdriver?) 我有这段代码,只要 Chrome 未打开,它就可以正常工作,否则会出错。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chromeDriverPath = 'C:\\Users\\xxxx\\AppData\\Local\\SeleniumBasic\\chromedriver.exe'
userdatadir = 'C:\\Users\\xxxx\\AppData\\Local\\Google\\Chrome\\User Data'
chromeOptions = webdriver.ChromeOptions() 
tmp = f"--user-data-dir={userdatadir}"

chromeOptions.add_argument(tmp) #Path to your chrome profile
driver = webdriver.Chrome(chromeDriverPath, options=chromeOptions) 

print(driver.current_url)

如果 Chrome 已经打开,这是错误: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

一种可能的解决方法是(以编程方式)将 Chrome default 目录复制到一个新目录中。这样,所有设置和 cookie 也会被复制。 就我而言,问题是该目录> 2GB;我不能每次都复制这么多数据……没有意义。

那么,即使 Chrome 已打开,是否不可能或任何人都可以帮助使用默认配置文件打开 Chrome?

【问题讨论】:

  • 你不能通过杀死所有现有的 chrome 和 chromedriver 实例来启动你的脚本吗?

标签: python selenium google-chrome selenium-webdriver


【解决方案1】:

答案是您不能使用 1 个用户目录打开两个会话。 Web-driver 不会让你这样做,这就像在打开文件时在 Windows 中重命名文件一样。

如果你想在没有用户目录的情况下打开chrome,你可以简单地用--incognito打开它不会存储任何东西或使用用户目录。

否则,您必须在测试结束时使用driver.quit() 关闭会话(拆卸)。所以你可以毫无问题地运行下一个测试。 或者您可以使用另一个用户目录路径,这样会话就不会相互干扰

【讨论】:

  • 好点!!! +1
  • 好的,谢谢;我会给它一个理由。我的目标是,在使用登录或 2 因素登录的页面上导航时,触发一个 python 脚本,该脚本使用 beautifulsoup(如果页面是静态的)或 selenium(如果需要交互才能获得想要的数据)。但是从您和@undetectedSelenium 的回答中,我了解到不幸的是仍然没有办法
猜你喜欢
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 2015-09-12
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
相关资源
最近更新 更多