【问题标题】:Selenium: Point towards default Chrome sessionSelenium:指向默认的 Chrome 会话
【发布时间】:2019-10-14 02:54:24
【问题描述】:

虽然我意识到这不是“好”的做法 - 我有一个用例,我需要将 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 的会话。

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

我查看了另一个question,但那里的答案未能解决如何将 Selenium 指向默认会话。此外 - 这是一个过时的问题 - 从那时起,Chrome 和 Chromedriver 取得了很大进展。此外,那里的问题假设发布者能够连接到默认会话 - 我无法做到这一点,这表明 Chromedriver/Chrome 从那时起发生了变化。这个问题也适用于 Windows - 我在 Mac 上,工作方式不同。

【问题讨论】:

  • 这只是一个猜测,但您可能希望删除波浪号并使用完整路径(包括默认目录)。此外,documentation 提到使用 chrome://version URL 来查看 Chrome 最终使用的内容。
  • 问题是我没有引用chrome://version,这表明真正的路径实际上是~/Library/Application Support/Google/Chrome/
  • @etayluz,是的,您为“个人资料路径”使用了错误的路径。

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


【解决方案1】:

首先,,您不能将 Selenium 驱动程序指向(连接)到任何现有/以前的 Web 浏览 会话强>。即使您能够从现有/以前的 Web Browsing 会话中提取 Session IDCookies 和其他会话属性,您仍然不会不能将这些属性作为 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 和 10C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
  • Mac OS X El CapitanUsers/<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。

快照:

Profile Path 显示当前配置文件的位置。例如,我的 Windows 10 系统中的 Default 配置文件的位置是 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找到详细讨论

【讨论】:

    【解决方案2】:

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

    我使用的是 windows,但在你的 mac 情况下也应该类似。

    更多信息请参考this link

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

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

    参考:

    http://chromedriver.chromium.org/capabilities

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多