在Behat上设置Selenium2 Mink扩展以使用多个浏览器

时间:2014-05-15 15:11:39

标签: grid selenium-webdriver behat mink

我想使用我的selenium2网格在几个浏览器上运行我的behat测试。我设法让它们在每个环境/浏览器的基础上使用不同的behat.yml配置文件运行,但是我想配置一个behat配置文件来触发我所有节点上的运行。

我的behat.yml配置文件如下所示:

default: ... extensions: Behat\MinkExtension\Extension: base-url: http://www.myapp.com javascript_session: selenium2 selenium2: browser: 'firefox' wd_host: selenium2:4444/wd/hub ...

我没有运气就已经尝试过了:

  • 浏览器字段browser: {firefox, chrome}中的数组,配置解析器不喜欢它
  • 具有多个名称browser: 'firefox, chrome'的字符串,认为我有一个以字符串叹息
  • 命名的浏览器
  • 为我的selenium节点提供一个单一的名称,像browser这样的一般名称,由于某种原因试图使用iexplorer节点(什么?!)
  • 将浏览器字段留空browser: '',仅触发firefox节点,因为它似乎是默认节点
  • 我甚至尝试在yaml文件中创建多个browser密钥,最后一个条目覆盖其余的

如上所述,似乎实现这一目标的唯一方法是在每个环境的基础上创建一个behat.yml文件,即。 behat-firefox.yml,behat-c​​hrome.yml,并行运行它们。这样的事情(http://zalas.eu/running-behat-in-parallel-with-selenium-grid/

还有其他建议吗?

更新

我的工具版本:

  • Behat 2.5.3
  • Mink 1.5

1 个答案:

答案 0 :(得分:5)

我已经完成了跨浏览器的实施,我发现的解决方案是使用Ant,如下所示

<强> Behat.yml

为我们在behat.yml中创建的每个浏览器创建一个单独的配置文件,如下所示

chrome:
  context:
    class:  'FeatureContext'
  extensions:
    Behat\MinkExtension\Extension:
      base-url: http://www.myapp.com
      javascript_session:  'selenium'
      browser_name: googlechrome
      goutte:              ~
      selenium:

safari:
  context:
    class:  'FeatureContext'
  extensions:
    Behat\MinkExtension\Extension:
      base-url: http://www.myapp.com
      javascript_session:  'selenium2'
      browser_name: safari
      goutte:              ~
      selenium2:

firefox:
  context:
    class:  'FeatureContext'
  extensions:
    Behat\MinkExtension\Extension:
      base-url: http://www.myapp.com
      javascript_session:  'selenium2'
      browser_name: firefox
      goutte:              ~
      selenium2:

<强>在build.xml

这是一个主配置,我们为每个配置文件创建单独的目标,同时为每个浏览器生成漂亮的html报告。尝试了解下面的配置

<project name="behat" basedir=".">
   <target name="run">
    <delete dir="${basedir}/report" />
      <mkdir dir="${basedir}/report"/>
      <parallel>
      <antcall target="chrome"></antcall>
      <antcall target="safari"></antcall>
       <antcall target="firefox"></antcall>
     </parallel>
  </target>
  <target name="chrome">
    <exec dir="${basedir}" executable="php" failonerror="true">
    <arg line= "bin/behat -f html --out report/chrome.html -p chrome"/>
    </exec>
  </target>
  <target name="safari">
    <exec dir="${basedir}" executable="php" failonerror="true">
    <arg line= "bin/behat -f html --out report/safari.html -p safari"/>
    </exec>
  </target>
  <target name="firefox">
    <exec dir="${basedir}" executable="php" failonerror="true">
    <arg line= "bin/behat -f html --out report/firefox.html -p firefox"/>
    </exec>
  </target>
</project>

在运行测试之前不要忘记启动selenium-server。您应该运行以下命令..

$ java -jar selenium-server-standalone-2.30.0.jar

完成配置后,您需要使用名为run

的主要目标运行ANT
ant run

本教程的来源是here