【问题标题】:Parallel execution of FirefoxDriver tests with profile share same profile copy与配置文件共享相同配置文件副本的 FirefoxDriver 测试并行执行
【发布时间】:2012-10-18 18:13:27
【问题描述】:

一段时间以来,我们一直在使用 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("")) 的情况下运行时的行为是相同的。

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

谢谢!

【问题讨论】:

    标签: firefox webdriver selenium-webdriver


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

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2015-02-21
      • 1970-01-01
      相关资源
      最近更新 更多