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

问题描述:

一段时间以来,我们一直在使用FirefoxDriver基于WebDriver 2.25.0执行一组自动化测试。这些测试是通过一个基于Maven 3.0的构建和它的FailSafe插件并行执行的(四核机器上每个内核有2个线程)。每个测试都有一个@BeforeClass方法,用于检索FirefoxDriver的一个实例并清除所有的Cookie。所有这些工作正常。并行执行FirefoxDriver测试和配置文件共享相同的配置文件副本

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

更新:行为不-Dwebdriver.firefox.profile变量运行,并使用新的FirefoxDriver时是一样的(新ProfilesIni()getProfile( “<PROFILENAME>”)。)。

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

谢谢!

  • 如果在实例FirefoxDriver您不提供个人资料,那么当你运行该代码:new FirefoxDriver(...),一个anonymus轮廓C:\Users\#TheUser\AppData\Local\Temp文件夹内创建,例如命名anonymous1864251113973276405webdriver-profile
  • 如果您提供FirefoxDriver的配置文件,则行为是相同的,除了命名配置文件副本:例如userprofile6938771758695790613copy

总之,总的webdriver创建这个文件夹Temp内的配置文件的副本甚至可以指定或不具有使用自定义配置文件。关于cookies,每个创建的配置文件都有一个名为cookies.sqlite的文件。我不是100%确定cookie是否以某种方式干涉,他们不应该。您可以通过比较保存在每个网络驱动器中的cookie来检查,使用:

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