我正在使用firefox 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配置文件目录(因为它一直在变化)。这样我就可以使用以前的cookie和缓存文件了。你能给我任何想法或任何其他方法来实现它吗?
答案 0 :(得分:0)
FirefoxProfile.ProfileDirectory
指的是生成的配置文件目录(显然,仅在创建浏览器实例后可用)
根据Selenium源代码,配置文件目录在temp文件夹中生成为随机目录,因此无法更改
// 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文件是修改首选项的另一种方法, 建议仅限高级用户使用。
<强> UPD。强> 解决问题的唯一方法我可以看到,除了深入研究硒源之外,还在更改临时文件夹位置,然后再将webdriver启动到所需的文件夹,然后将其更改为当前用户的原始值。
<强> UPD2。强>
另一个可能的解决方案(虽然尚未尝试)是为先前的webdriver指定ProfileDirectory
为profileDirectory
运行另一个webdriver实例的新FirefoxProfile
实例。鉴于来自profileDirectory
的所有文件都被复制到生成的临时文件夹,这可以帮助您实现所需的功能。
答案 1 :(得分:0)
您可以直接找到临时文件路径,然后在创建驱动程序后使用系统命令将文件复制到此文件夹中。然后你可以访问它们,虽然这有点hacky但应该工作(除非我错过了一些关键的东西,我觉得我可能有:) :)
答案 2 :(得分:0)
你是否绝对有必要使用firefox?如果您使用的是IE,这不会被照顾吗?从selenium jar帮助内容
-ensureCleanSession:如果浏览器没有用户个人资料,请make 确保每个新会话都没有以前会话的工件。对于 例如,启用此选项将导致所有用户cookie 在启动IE之前存档,并在IE关闭后恢复。
因此,如果不在IE中运行测试时使用该选项,您的Cookie将保留。我没有尝试过webdriver,但我看到在使用Selenium 1时保留了cookie。