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

使用配置文件并行执行FirefoxDriver测试共享相同的配置文件副本,firefox,webdriver,selenium-webdriver,Firefox,Webdriver,Selenium Webdriver,一段时间以来,我们一直在使用FirefoxDriver执行一组基于WebDriver 2.25.0的自动化测试。这些测试由一个基于Maven 3.0的构建及其故障保护插件并行执行(四核机器上每个核2个线程)。每个测试都有一个@BeforeClass方法,该方法检索FirefoxDriver的一个实例并清除所有cookie。这一切都很好 由于对代理身份验证的更改(以前没有),我们现在需要使用特定的Firefox配置文件运行测试。概要文件已经创建,构建现在包括-Dwebdriver.firefox.

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

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

更新:在不使用-Dwebdriver.firefox.profile变量并使用新的FirefoxDriver(new ProfilesIni().getProfile(“”)的情况下运行时,行为相同

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

谢谢

  • 如果在实例化
    FirefoxDriver
    时未提供配置文件,则在运行代码:
    new FirefoxDriver(…)
    时,将在
    C:\Users\\user\AppData\Local\Temp
    文件夹内创建一个匿名配置文件,名为
    anonymous1864251113973276405webdriver配置文件
  • 如果为
    FirefoxDriver
    提供配置文件,则行为相同,但配置文件副本命名除外:例如
    userprofile6938771758695790613copy
总之,Webdriver始终在该
Temp
文件夹中创建配置文件的副本,即使您指定或不指定必须使用的自定义配置文件。关于Cookie,每个创建的配置文件内部都有一个名为
cookies.sqlite
的文件。我不能100%确定饼干是否会以某种方式干扰,它们不应该。您可以通过比较每个webdriver中保存的Cookie进行检查,方法是:

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