Selenium:指向默认Chrome会话
虽然我意识到这不是一个“好”实践,但我有一个用例,需要将Selenium驱动程序指向(连接)我的默认Chrome会话/配置文件 我的默认配置文件如下:Selenium:指向默认Chrome会话,selenium,google-chrome,selenium-webdriver,cookies,session-cookies,Selenium,Google Chrome,Selenium Webdriver,Cookies,Session Cookies,虽然我意识到这不是一个“好”实践,但我有一个用例,需要将Selenium驱动程序指向(连接)我的默认Chrome会话/配置文件 我的默认配置文件如下: ~/Library/Caches/Google/Chrome/Default 以下是我目前的设置方式:(不工作) 我使用的是Chrome版本74.0.3729.169和chromedriver版本(兼容版本) 当Chrome打开时,我在Chrome的设置中看不到任何cookie,所以很明显它没有指向我的默认会话。另外,我看到一个Selenium目
~/Library/Caches/Google/Chrome/Default
以下是我目前的设置方式:(不工作)
我使用的是Chrome版本74.0.3729.169和chromedriver版本(兼容版本)
当Chrome打开时,我在Chrome的设置中看不到任何cookie,所以很明显它没有指向我的默认会话。另外,我看到一个Selenium
目录已经创建(这似乎意味着它无法连接到~/Library/Caches/Google/Chrome/Default
上的会话)
如何将selenium连接到默认的Chrome会话?这与正常打开Chrome时看到的会话相同
我看了另一个,但答案没有说明如何将Selenium指向默认会话。而且-这是一个过时的问题-Chrome和Chromedriver从那时起已经有了很大的进步。另外,这里的问题假设海报能够连接到默认会话-我无法做到这一点,这表明romedriver/Chrome从那时起就发生了变化。这个问题也是针对Windows的——我使用的Mac电脑工作方式不同。首先,你不能指向(连接)Selenium驱动程序将连接到任何现有/以前的Web浏览会话。即使您能够从现有/以前的Web浏览会话提取会话ID、cookie和其他会话属性,您仍然无法将这些属性作为钩子传递到Web驱动程序 您可以在中找到详细的讨论 但是,您可以连接到现有的默认Chrome配置文件
您似乎已经意识到,尝试使用默认Chrome配置文件进行测试自动化将违反所有最佳实践,因为默认Chrome配置文件可能包含以下任一/所有内容:
- 浏览器设置
- 扩展
- 书签
- 应用程序
- 保存的密码
- 浏览历史记录
- 等
默认Chrome配置文件的位置 根据文档,Chrome默认配置文件文件夹的位置因平台而异。位置为:
- Windows 7、8.1和10:
C:\Users\\AppData\Local\Google\Chrome\User Data\Default
- Mac OS X El Capitan:
用户//库/应用程序支持/Google/Chrome/Default
- Linux:
/home/.config/google chrome/default
替换为用户文件夹的名称。默认配置文件文件夹的名称仅为default(或Linux中的default)。但是,如果您创建了其他配置文件,它们的文件夹名称就不那么明显。创建配置文件时分配给它的名称显示在Chrome窗口标题栏右侧的名称按钮上。不幸的是,Chrome在关联的配置文件文件夹上使用的名称是一个通用的编号名称,如Pr文件3
如果您需要知道Chrome配置文件的文件夹名称,只需访问chrome://version
,然后按Enter键
快照:
配置文件路径
显示当前配置文件的位置。例如,我的默认配置文件在我的Windows 10系统中的位置是C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default
。您可以选择路径并复制它,然后将其粘贴到Windows中的文件资源管理器中,查找器打开OSX或Linux中的Nautilus之类的文件管理器,以访问该文件夹
示例代码(Windows 10) 最后,要访问默认的Chrome配置文件,您可以使用以下基于Python的解决方案:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\Soma Bhattacharjee\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")
您可以在中找到详细的讨论
确保使用“C”指向正确的文件夹hrome://version“ 我使用的是windows,但在你的mac电脑中也应该类似 有关更多信息,请参阅 如何创建自定义配置文件: 您可以通过运行Chrome(在命令行上或通过ChromeDriver)创建自己的自定义配置文件将用户数据目录开关设置为某个新目录。如果路径不存在,Chrome将在指定位置创建一个新的配置文件。然后,您可以根据需要修改配置文件设置,ChromeDriver将来可以使用该配置文件。。打开chrome://version 在浏览器中查看Chrome使用的配置文件 参考:
这只是一个猜测,但您可能希望删除波浪线并使用完整路径(包括默认目录)。此外,使用chrome://version 查看Chrome实际使用的URL。问题是我没有引用
chrome://version
这表明真正的路径实际上是~/Library/Application Support/Google/Chrome/
@etayluz,是的,您使用了错误的路径作为“配置文件路径”。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\\Users\\Soma Bhattacharjee\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe', chrome_options=options)
driver.get("https://www.google.co.in")