Selenium:指向默认 Chrome 会话
Selenium: Point towards default Chrome session
虽然我意识到这不是 "good" 实践 - 我有一个用例,我需要将 Selenium 驱动程序指向(连接)到我的默认 Chrome session/profile.
我的默认配置文件在这里:
~/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 和 Chrome 驱动程序从那时起已经取得了很大进步。此外,那里的问题假设张贴者能够连接到默认会话 - 我无法做到这一点,这表明 Chromedriver/Chrome 从那时起已经发生了变化。这个问题也是针对 Windows 的 - 我在 Mac 那里工作方式不同。
首先,否,您不能将 Selenium driver 指向(连接)到任何 existing/previous 网页浏览 session。即使您能够从 existing/previous Web Browsing session,您仍然无法将这些属性作为 HOOK 传递给 WebDriver。
You can find a detailed discussion in How can I reconnect to the browser opened by webdriver with selenium?
但粗略地说,您可以连接到现有的 默认 Chrome 配置文件。
您似乎已经意识到尝试使用 默认 Chrome 配置文件 进行 测试自动化 将反对所有最佳实践,因为默认Chrome 配置文件 可能包含either/all以下:
- 浏览器设置
- 扩展程序
- 书签
- 应用程序
- 已保存的密码
- 浏览历史
- 等等
因此默认 Chrome配置文件可能不符合您的测试规范 并可能在尝试加载时偶尔引发异常。因此,您应该始终使用 自定义 Chrome 配置文件.
You can find a detailed discussion in 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 window 标题栏右侧的名称按钮上。不幸的是,Chrome 在关联的配置文件文件夹上使用的名称是一个通用的编号名称,例如 Profile 3
.
如果您需要知道任何 Chrome 配置文件的 文件夹名称,您只需在地址栏中访问 chrome://version
并按 Enter。
快照:
Profile Path
显示当前配置文件的位置。例如,我的 Default 配置文件在我的 Windows 10 系统中的位置是 C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default
。您可以 select 路径并将其复制并粘贴到 Windows 中的文件资源管理器、OS X 中的 Finder 或文件管理器中Nautilus 在 Linux 中访问该文件夹。
示例代码 (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")
You can find a detailed discussion in How to use Chrome Profile in Selenium Webdriver Python 3
确保您使用 "Chrome://version" 指向正确的文件夹。
我正在使用 windows 但它在你 mac 的情况下也应该相似。
有关详细信息,请参阅 this link。
如何创建自定义配置文件:
您可以通过 运行 Chrome(在 command-line 或通过 ChromeDriver)和 user-data-dir 开关设置到一些新目录。 如果路径不存在,Chrome 将在指定位置创建一个新的配置文件。然后您可以根据需要修改配置文件设置,ChromeDriver 以后可以使用该配置文件。在浏览器中打开 chrome://version 以查看 Chrome 使用的配置文件。
参考:
虽然我意识到这不是 "good" 实践 - 我有一个用例,我需要将 Selenium 驱动程序指向(连接)到我的默认 Chrome session/profile.
我的默认配置文件在这里:
~/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 和 Chrome 驱动程序从那时起已经取得了很大进步。此外,那里的问题假设张贴者能够连接到默认会话 - 我无法做到这一点,这表明 Chromedriver/Chrome 从那时起已经发生了变化。这个问题也是针对 Windows 的 - 我在 Mac 那里工作方式不同。
首先,否,您不能将 Selenium driver 指向(连接)到任何 existing/previous 网页浏览 session。即使您能够从 existing/previous Web Browsing session,您仍然无法将这些属性作为 HOOK 传递给 WebDriver。
You can find a detailed discussion in How can I reconnect to the browser opened by webdriver with selenium?
但粗略地说,您可以连接到现有的 默认 Chrome 配置文件。
您似乎已经意识到尝试使用 默认 Chrome 配置文件 进行 测试自动化 将反对所有最佳实践,因为默认Chrome 配置文件 可能包含either/all以下:
- 浏览器设置
- 扩展程序
- 书签
- 应用程序
- 已保存的密码
- 浏览历史
- 等等
因此默认 Chrome配置文件可能不符合您的测试规范 并可能在尝试加载时偶尔引发异常。因此,您应该始终使用 自定义 Chrome 配置文件.
You can find a detailed discussion in 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 window 标题栏右侧的名称按钮上。不幸的是,Chrome 在关联的配置文件文件夹上使用的名称是一个通用的编号名称,例如 Profile 3
.
如果您需要知道任何 Chrome 配置文件的 文件夹名称,您只需在地址栏中访问 chrome://version
并按 Enter。
快照:
Profile Path
显示当前配置文件的位置。例如,我的 Default 配置文件在我的 Windows 10 系统中的位置是 C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default
。您可以 select 路径并将其复制并粘贴到 Windows 中的文件资源管理器、OS X 中的 Finder 或文件管理器中Nautilus 在 Linux 中访问该文件夹。
示例代码 (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")
You can find a detailed discussion in How to use Chrome Profile in Selenium Webdriver Python 3
确保您使用 "Chrome://version" 指向正确的文件夹。
我正在使用 windows 但它在你 mac 的情况下也应该相似。
有关详细信息,请参阅 this link。
如何创建自定义配置文件:
您可以通过 运行 Chrome(在 command-line 或通过 ChromeDriver)和 user-data-dir 开关设置到一些新目录。 如果路径不存在,Chrome 将在指定位置创建一个新的配置文件。然后您可以根据需要修改配置文件设置,ChromeDriver 以后可以使用该配置文件。在浏览器中打开 chrome://version 以查看 Chrome 使用的配置文件。
参考: