4

我正在使用 Firefox 网络驱动程序。我想将所有 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 配置文件目录(因为它一直在变化)。这样我就可以使用以前的 cookie 和缓存文件。你能给我任何想法或任何替代方法来完成它吗?

4

3 回答 3

0

您可以找到临时文件路径,然后在创建驱动程序后使用系统命令将文件复制到此文件夹中。然后你就可以访问它们了,虽然这有点hacky但应该可以工作(除非我在这里错过了一些重要的东西,我觉得我可能有:))

于 2012-04-29T22:03:45.193 回答
0

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

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

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

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

来自mozillaZine的报价:

user.js 文件是修改首选项的另一种方法,仅推荐给高级用户。

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

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

于 2012-04-29T21:26:25.687 回答
0

你绝对有必要使用firefox吗?如果您使用的是IE,这不会被照顾吗?来自 selenium jar 帮助内容

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

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

于 2012-04-30T03:06:39.013 回答