硒:指向默认的Chrome会话

eta*_*luz 7 cookies selenium google-chrome session-cookies selenium-webdriver

尽管我意识到这不是“好的”做法-我有一个用例,需要将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")
Run Code Online (Sandbox Code Playgroud)

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

Chrome打开后,我在Chrome的设置中看不到任何Cookie,因此很明显它没有指向我的默认会话。另外,我看到Selenium已经创建了一个目录(这似乎表示该目录无法连接到的会话)~/Library/Caches/Google/Chrome/Default

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

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

sup*_*uri 7

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

在此处输入图片说明

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

有关更多信息,请参考此链接

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

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

参考:

http://chromedriver.chromium.org/capabilities


Deb*_*anB 6

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

您可以在如何使用 selenium 重新连接到 webdriver 打开的浏览器中找到详细讨论

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


您似乎已经意识到尝试使用默认 Chrome 配置文件进行测试自动化将违反所有最佳实践,因为默认 Chrome 配置文件可能包含以下任一/所有内容:

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

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

您可以在如何通过 Selenium 的 --user-data-dir 参数打开 Chrome 配置文件中找到详细讨论

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


默认 Chrome 配置文件的位置

根据如何在 Windows、Mac 和 Linux 上查找 Chrome 配置文件文件夹中的文档,Chrome 的默认配置文件文件夹的位置因平台而异。地点是:

  • Windows 7、8.1 和 10C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X 埃尔卡皮坦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。

快照:

默认Chrome配置文件

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")
Run Code Online (Sandbox Code Playgroud)

您可以在How to use Chrome Profile in Selenium Webdriver Python 3 中找到详细讨论