3

一段时间以来,我们一直在使用 FirefoxDriver 执行一组基于 WebDriver 2.25.0 的自动化测试。这些测试由基于 Maven 3.0 的构建及其 FailSafe 插件并行执行(四核机器上每个核心 2 个线程)。每个测试都有一个 @BeforeClass 方法,该方法检索 FirefoxDriver 的实例并清除所有 cookie。所有这一切都很好。

由于代理身份验证的更改(以前没有),我们现在需要使用特定的 Firefox 配置文件运行测试。配置文件已创建,现在构建包含 -Dwebdriver.firefox.profile= 环境变量。配置文件似乎已被拾取,因为我们没有收到任何“未找到配置文件”错误。然而,似乎每个 Firefox 实例都使用相同的配置文件副本,因此共享相同的 cookie 存储:应用程序应该在用户第一次访问时提供区域选择对话框,但在运行这些测试时不提供。

更新:在没有 -Dwebdriver.firefox.profile 变量和使用 new FirefoxDriver(new ProfilesIni().getProfile("<profileName>")) 的情况下运行时的行为是相同的。

FirefoxDriver 不是创建指定配置文件的副本并使用该隔离副本运行每个 Firefox 实例吗?

谢谢!

4

1 回答 1

0
  • 如果您在实例化时没有提供配置文件FirefoxDriver,那么当您运行代码时:new FirefoxDriver(...)会在文件夹中创建一个匿名配置C:\Users\#TheUser\AppData\Local\Temp文件,名为 eg anonymous1864251113973276405webdriver-profile
  • 如果您为 提供配置文件FirefoxDriver,则行为是相同的,除了配置文件副本被命名为:例如userprofile6938771758695790613copy

总之,Webdriver 始终在此Temp文件夹中创建配置文件的副本,即使您指定或未指定必须使用的自定义配置文件。关于 cookie,每个创建的配置文件都有一个cookies.sqlite内部命名的文件。我不能 100% 确定 cookie 是否会以某种方式干扰,它们不应该。您可以通过比较保存在每个网络驱动程序中的 cookie 来检查,使用:

 Set<Cookie> webDriverCookies = webDriver.manage().getCookies();
于 2012-11-01T15:08:37.263 回答