使用 Chrome 可以做到,只是不像 Firefox 配置文件操作那样简单直接。
由于 WebDriver 绑定公开了添加“自定义”功能和命令行参数的能力,因此您可以为其提供 Chrome 知道的任何命令行开关:
http://peter.sh/experiments/chromium-command-line-switches/
有了这个,我们可以为 Chrome 提供一个要加载的配置文件,就像使用 Firefox 一样。
但是,WebDriver 绑定不公开选项以及 Firefox 配置文件。所以必须手动完成。
首先,找出您的个人资料所在的位置:
在 Chrome 中转到此 URL。
chrome://version/
它会告诉你它当前正在加载什么配置文件(以及它正在使用什么命令开关)。将配置文件路径复制到资源管理器并转到它。
默认情况下,它应该使用Default
配置文件目录。在资源管理器中升级,因此您坐在User Data
文件夹中。
下一步,为 Selenium 创建一个新的配置文件以供使用。打开 Chrome,转到设置 > 用户 > 添加新用户。给它一个名字。
创建后,Chrome 将为该用户打开一个新的 Chrome 窗口。下一步是强制 Chrome(仅限此用户)将下载内容保存在某个位置。
这可以通过两种方式完成。在 Chrome UI 中,转到设置,然后更改下载目录并确保未选中旁边的复选框,或者获得更多创意......
所有 Chrome 首选项都存储在一个文件中,该文件存储在用户目录中。您应该已经打开了一个资源管理器窗口,User Data
位于 Chrome 用户文件夹中的文件夹中。您应该希望看到它创建了一个新的配置文件(可能称为Profile 1
)。进去吧。
现在寻找一个名为Preferences(无扩展名)的文件。
用记事本编辑它(它是一个文本文档,带有 JSON)。
查找下载部分,它将如下所示:
"download": {
"directory_upgrade": true,
"extensions_to_open": ""
},
添加此密钥,输入您要将文件保存到的路径:
"default_directory": "PATH",
确保使用另一个反斜杠转义路径中的所有斜杠,就像使用 Visual Studio 调试器时一样。
例如,C:\Bob\Jim\Downloads
应输入为C:\\Bob\\Jim\\Downloads
。
保存此文件。
现在你有一个配置文件,下载到某个地方。如何让 Chrome 使用此配置文件?您告诉它在启动时打开哪个配置文件。命令行将是:
--profile-directory="Profile 1"
(替换为文件夹Profile 1
中调用的任何内容User Data
,如果没有调用它)。
好的,我们可以告诉 Chrome 加载特定的配置文件,但是我们如何告诉 Selenium 也这样做呢?简单的!将其添加为“附加命令行开关”。
var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument(@"--profile-directory=""Profile 1""");
Selenium 将确保将命令行开关传递给 Chrome。
(注意:如果有人知道更简单的解决方案,请告诉我!)。
至于 IE,我已经在 IE8 和 IE9 上测试过了,它运行正常。IE 可以考虑默认下载位置所在的注册表项。我无法评论 IE7 或更低版本。
使用regedit导航到(这是每个 Windows 用户设置):
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer
添加一个名为Download Directory
. 它的值将是您希望下载的确切位置。无需逃避路径 BTW。
只需确保您在 Windows 下登录的用户已设置此值,就无需进行更多设置。