尽管我意识到这不是“好的”做法-我有一个用例,需要将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上工作方式有所不同。
答案 0 :(得分:2)
确保使用“ Chrome:// version”指向正确的文件夹。
我正在使用Windows,但在Mac情况下也应该类似。
有关更多信息,请参见this link。
如何创建自定义配置文件:
您可以通过仅在用户数据目录开关设置为某个新目录的情况下运行Chrome(在命令行上或通过ChromeDriver)来创建自己的自定义配置文件。 如果该路径不存在,Chrome将在指定位置创建一个新的配置文件。然后,您可以根据需要修改配置文件设置,ChromeDriver将来可以使用该配置文件 。在浏览器中打开chrome:// version,以查看Chrome使用的配置文件。
参考:
答案 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配置文件,则需要遵循以下详细信息。
根据How to Find Your Chrome Profile Folder on Windows, Mac, and Linux中的文档,Chrome的默认配置文件文件夹的位置因平台而异。这些位置是:
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default
Users/<username>/Library/Application Support/Google/Chrome/Default
/home/<username>/.config/google-chrome/default
您需要将<username>
替换为用户文件夹的名称。默认配置文件文件夹简称为Default(在Linux中为default)。但是,如果您创建了其他配置文件,则其文件夹名称不太明显。创建配置文件时分配给该配置文件的名称显示在Chrome窗口标题栏右侧的名称按钮上。不幸的是,Chrome在关联的配置文件文件夹中使用的名称是通用的编号名称,例如 Profile 3
。
如果您需要知道任何 Chrome配置文件的文件夹名称,只需访问地址栏中的chrome://version
并按Enter。
快照:
Profile Path
显示当前配置文件的位置。例如,我的默认配置文件在我的 Windows 10 系统中的位置为C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default
。您可以选择路径并将其复制并粘贴到Windows中的文件资源管理器, OS X 上的Finder或Linux中的 Nautilus 文件管理器中,以访问该文件夹。
最后,要访问默认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
中找到详细的讨论