Selenium设置偏好目录

4
我正在使用火狐浏览器的webdriver。我想将所有cookie和缓存文件存储到自定义目录中,但它却使用临时目录而非我的目录。以下是我的代码:
FirefoxProfile firefoxProfile = new FirefoxProfile(path, false);
MessageBox.Show(firefoxProfile.ProfileDirectory);     //Its showing blank
driver = new FirefoxDriver(firefoxProfile);
MessageBox.Show(firefoxProfile.ProfileDirectory);    //Its showing the temp dir
                                                     //not my custom dir

如何使它接受我的目录并将所有的cookie和文件存储在那里?

谢谢。

编辑:

我需要让selenium配置文件夹固定(因为它一直在变化)。这样我就可以使用以前的cookies和缓存文件。你可以给我任何想法或任何其他方法来完成它吗?


1
我认为这是不可能的(将cookie保存在指定目录中)-您可以在此处阅读类似问题的信息:http://groups.google.com/group/selenium-users/browse_thread/thread/bc39b481edfafd1c/b9d225ca36648fbf?lnk=gst&q=firefox+cookie+directory#b9d225ca36648fbf - gillyb
3个回答

0

FirefoxProfile.ProfileDirectory 指的是生成的配置文件目录(显然,仅在浏览器实例创建后才可用)。 根据 Selenium 源代码,配置文件目录在临时文件夹中生成为一个随机目录,因此无法更改

// creates a random folder name in Path.GetTempPath()
this.profileDir = GenerateProfileDirectoryName(); 

并且

public string ProfileDirectory
{
    get
    {
        return this.profileDir;
    }
}

在创建 FirefoxProfile 时指定的 profileDirectory 用于加载 user.js。

来自 mozillaZine 的引用:

user.js 文件是修改首选项的替代方法,仅推荐高级用户使用。

更新。 除了深入研究 selenium 源代码外,我看到解决您问题的唯一方法是在启动 webdriver 前将临时文件夹位置更改为所需文件夹,然后将其更改回当前用户的原始值。

更新2。 另一个可能的解决方案(尚未尝试)是将之前 webdriver 运行的 ProfileDirectory 作为新 FirefoxProfile 实例的 profileDirectory 指定给另一个 webdriver 实例。鉴于所有来自 profileDirectory 的文件都被复制到生成的临时文件夹中,这可以帮助您实现所需的功能。


抱歉,我是第一次使用Selenium。我的问题是 - 我需要修复Selenium配置文件目录(因为它一直在变化)。这样我就可以使用以前的cookie和缓存文件。你能给我任何想法吗?如何完成它? - Barun
如果您两次启动Firefox WebDriver,则可以从第一次运行中获取firefoxProfile.ProfileDirectory,并在第二次运行时在firefoxProfile配置文件创建期间指定它作为参数。考虑到该文件夹已复制到临时文件夹中,这可能会起作用。 - Li0liQ
那么更改 user.js 是最好的方法吗?你能否给我发送一个正在执行此任务的示例 user.js 内容。很抱歉问这个问题。但我找不到任何执行此操作的示例。 - Barun
正如您所读的,user.js 旨在修改浏览器首选项。我怀疑它是否允许修改 cookie。 - Li0liQ

0

您可以通过已知的临时文件路径,在创建驱动程序后使用系统命令将文件复制到该文件夹中。然后,您将可以访问它们,尽管这有点不正式但应该有效(除非我在这里遗漏了某些重要的东西,我感觉我可能会 :) )


0

你一定要使用Firefox吗?如果你使用IE,这个问题不会被解决吗?来自Selenium jar帮助内容

-ensureCleanSession:如果浏览器没有用户配置文件,请确保每个新会话都没有来自以前会话的遗留物。例如,启用此选项将导致在启动IE之前归档所有用户cookie,并在关闭IE后恢复。

因此,如果你在IE中运行测试时使用该选项,你的cookie将保留。我没有在webdriver中尝试过,但我在使用Selenium 1时看到了cookie被保留的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接