【问题标题】:Selenium set preference directorySelenium 设置首选项目录
【发布时间】:2012-05-09 16:43:29
【问题描述】:

我正在使用 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 和缓存文件。你能给我任何想法或任何替代方法来完成它吗?

【问题讨论】:

标签: c# firefox selenium webdriver selenium-webdriver


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    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 文件是修改首选项的另一种方法, 仅推荐给高级用户。

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

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

    【讨论】:

    • 抱歉,我刚开始使用 selenium。我的问题是 - 我需要修复 selenium 配置文件目录(因为它一直在变化)。这样我就可以使用以前的 cookie 和缓存文件。你能给我任何想法,如何完成它?
    • 如果您两次启动 Firefox WebDriver,您可以从第一次运行中获取 firefoxProfile.ProfileDirectory,并在第二次运行创建 firefoxProfile 配置文件时将其指定为参数。考虑到这个文件夹被复制到临时文件夹中,这可以工作。
    • 所以改变 user.js 是最好的方法吗?您能否向我发送一个正在执行此工作的示例 user.js 内容。抱歉问这个。但我找不到任何这样做的样本。
    • 如您所见,user.js 旨在修改浏览器首选项。我怀疑它是否允许修改 cookie。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 2017-03-31
      • 2017-09-06
      • 1970-01-01
      • 2021-12-22
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多