使用配置文件共享相同配置文件副本的FirefoxDriver测试的并行执行

时间:2012-10-18 18:13:27

标签: firefox webdriver selenium-webdriver

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

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

更新:在没有-Dwebdriver.firefox.profile变量并使用新的FirefoxDriver(新的ProfilesIni()。getProfile(“< profileName>”))的情况下运行时,行为相同。 / p>

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

总之,即使您指定了必须使用的自定义配置文件,Webdriver也始终在此Temp文件夹中创建配置文件的副本。关于cookie,每个创建的配置文件都有一个名为cookies.sqlite的文件。我不是百分百肯定如果cookie干扰某种方式,他们不应该。您可以使用以下方法比较每个webdriver中保存的Cookie:

 Set<Cookie> webDriverCookies = webDriver.manage().getCookies();