是否可以在黄瓜功能文件中的所有场景中使用单个webDriver实例

时间:2018-10-19 16:42:47

标签: selenium-webdriver bdd cucumber-jvm

我为每个功能文件中的所有场景使用一个EventFiringWebDriver弹簧bean创建了一个黄瓜弹簧项目。我的测试工作正常,并且每种情况下不打开新驱动程序会减少总测试时间。这是可以接受的做法吗?感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

作为标准做法,您应将驱动程序管理与测试代码分开,后者应根据在单个或多个浏览器/平台上并行或顺序运行的运行时配置来提供和管理驱动程序会话。

在我们的情况下,我们使用qaf with gherkin,而qaf负责提供线程安全的驱动程序会话,以在一个或多个浏览器中并行或顺序运行方案。我们在xml配置文件中指定该文件,它是标准的test-ng配置文件。例如,以下配置文件在两个浏览器(两个浏览器均并行)中并行运行方案:

<suite name="AUT Test Automation" verbose="0" parallel="tests" thread-count="10">

      <test name="Tests on ff" parallel="methods">
           <parameter name="driver.name" value="firefoxDriver" />
           <classes>
               <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
           </classes>
      </test>

      <test name="Tests on chrome" parallel="methods">
           <parameter name="driver.name" value="chromeDriver" />
           <classes>
               <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
           </classes>
      </test>
</suite>

可以根据需要进行配置。

答案 1 :(得分:-1)

最佳做法是每个浏览器进行一次测试。这样可以更好地将问题隔离在一次运行中,因此,如果一个脚本横向运行,则不太可能影响其他脚本。

如果还没有,请研究并行执行。这是使事情进展更快的最佳选择。如果您仅添加一个浏览器,则将整体执行时间减少一半左右。更多的浏览器将使其更快。