Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium:指向默认Chrome会话_Selenium_Google Chrome_Selenium Webdriver_Cookies_Session Cookies - Fatal编程技术网

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目

虽然我意识到这不是一个“好”实践,但我有一个用例,需要将Selenium驱动程序指向(连接)我的默认Chrome会话/配置文件

我的默认配置文件如下:
~/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配置文件

您可以在中找到详细的讨论

如果您的用例仍然保证使用默认的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")