硒:指向默认的Chrome会话

时间:2019-05-28 14:34:19

标签: selenium google-chrome selenium-webdriver cookies session-cookies

尽管我意识到这不是“好的”做法-我有一个用例,需要将Selenium驱动程序指向(连接)我的默认Chrome会话/配置文件。

我的默认个人资料在这里: ~/Library/Caches/Google/Chrome/Default

这是我当前的设置方式:(不起作用)

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=~/Library/Caches/Google/Chrome")
options.add_argument("--profile-directory=Default")
browser = webdriver.Chrome(options=options, executable_path=r"./chromedriver")
browser.get("http://google.com")

我正在使用Chrome版本74.0.3729.169和chromedriver版本ChromeDriver 74.0.3729.6(兼容版本)。

Chrome打开后,我在Chrome的设置中看不到任何Cookie,因此很明显它没有指向我的默认会话。另外,我看到已经创建了Selenium目录(这似乎意味着它未能连接到~/Library/Caches/Google/Chrome/Default上的会话。

如何将硒连接到默认的Chrome会话?这与正常打开Chrome浏览器时看到的会话相同。

我已经看过其他question,但是那里的答案无法解决如何将Selenium指向默认会话。另外-这是一个过时的问题-从那时起,Chrome和Chromedriver取得了很大进步。另外,这里的问题假设发布者能够连接到默认会话-我无法执行此操作,这表明从那时起Chromedriver / Chrome已经更改。同样,这个问题是针对Windows的-我在Mac上工作方式有所不同。

2 个答案:

答案 0 :(得分:2)

确保使用“ Chrome:// version”指向正确的文件夹。

enter image description here

我正在使用Windows,但在Mac情况下也应该类似。

有关更多信息,请参见this link

如何创建自定义配置文件:

您可以通过仅在用户数据目录开关设置为某个新目录的情况下运行Chrome(在命令行上或通过ChromeDriver)来创建自己的自定义配置文件。 如果该路径不存在,Chrome将在指定位置创建一个新的配置文件。然后,您可以根据需要修改配置文件设置,ChromeDriver将来可以使用该配置文件 。在浏览器中打开chrome:// version,以查看Chrome使用的配置文件。

参考:

http://chromedriver.chromium.org/capabilities

答案 1 :(得分:0)

首先,,您不能将Selenium驱动程序指向(连接)任何现有/先前的 Web浏览 会话。即使您能够从现有/先前的 Web浏览会话中提取会话ID Cookies 和其他会话属性,您仍然不会不能将这些属性作为HOOK传递给 WebDriver

  

您可以在How can I reconnect to the browser opened by webdriver with selenium?

中找到详细的讨论

但是,您可以粗略地连接到现有的默认Chrome配置文件


您似乎已经意识到,尝试将默认 Chrome配置文件用于测试自动化将会违反所有最佳做法习惯,因为默认Chrome配置文件可能包含以下任一/全部:

  • 浏览器设置
  • 扩展名
  • 书签
  • 应用
  • 保存的密码
  • 浏览历史记录

因此默认 Chrome配置文件可能不符合您的测试规范,并且有时在尝试加载时会引发异常。因此,您应该始终使用自定义 Chrome配置文件

  

您可以在How to open a Chrome Profile through --user-data-dir argument of Selenium

中找到详细的讨论

如果您的用例仍保证使用默认 Chrome配置文件,则需要遵循以下详细信息。


默认Chrome配置文件的位置

根据How to Find Your Chrome Profile Folder on Windows, Mac, and Linux中的文档,Chrome的默认配置文件文件夹的位置因平台而异。这些位置是:

  • Windows 7、8.1和10 C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X El Capitan Users/<username>/Library/Application Support/Google/Chrome/Default
  • Linux /home/<username>/.config/google-chrome/default

您需要将<username>替换为用户文件夹的名称。默认配置文件文件夹简称为Default(在Linux中为default)。但是,如果您创建了其他配置文件,则其文件夹名称不太明显。创建配置文件时分配给该配置文件的名称显示在Chrome窗口标题栏右侧的名称按钮上。不幸的是,Chrome在关联的配置文件文件夹中使用的名称是通用的编号名称,例如 Profile 3

如果您需要知道任何 Chrome配置文件的文件夹名称,只需访问地址栏中的chrome://version并按Enter。

快照:

DefaultChromeProfile

Profile Path显示当前配置文件的位置。例如,我的默认配置文件在我的 Windows 10 系统中的位置为C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default。您可以选择路径并将其复制并粘贴到Windows中的文件资源管理器, OS X 上的Finder或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")
  

您可以在How to use Chrome Profile in Selenium Webdriver Python 3

中找到详细的讨论