一、问题场景

  Selenium是一个广泛使用的Web自动化测试工具,可以通过Python控制浏览器模拟各种用户操作。在默认情况下,Selenium打开的浏览器与原生的浏览器在变量环境上是相互隔离的,用户无法继承原生浏览器中的网站登录状态,每次运行时都需要重新进行登录,很不方便。
  经过在ChatGPT、度娘上一通搜索和尝试,阿猪找到一个操作简便的实现方法,就是为Selenium指定浏览器的User Data目录,与原生的浏览器共享cookie、缓存等文件。

二、为Selenium指定浏览器的User Data目录

  本文以Window和Chrome环境为例,示例代码如下:

1
2
3
4
5
from selenium import webdriver

obj_option = webdriver.ChromeOptions() # 创建一个ChromeOption实例
obj_option.add_argument(r"user-data-dir=C:\Users\zhu\AppData\Local\Google\Chrome\User Data") # 指定Chrome浏览器User Data目录的路径
obj_page = webdriver.Chrome(options=obj_option) # 创建一个WebDriver实例,并将ChromeOption作为参数传入

  这里假设你已经解决了WebDriver与浏览器的适配问题。
  需要注意的是,在运行的时候Windows中不要同时打开其他的Chrome浏览器窗体实例,否则可能会遇到如下报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited normally.
(unknown error: DevToolsActivePort file doesn’t exist)