【问题标题】:Set up Selenium2 Mink extension on Behat to use more than one browser在 Behat 上设置 Selenium2 Mink 扩展以使用多个浏览器
【发布时间】:2014-05-15 15:11:39
【问题描述】:

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

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

default: ... extensions: Behat\MinkExtension\Extension: base-url: @987654321@ javascript_session: selenium2 selenium2: browser: 'firefox' wd_host: selenium2:4444/wd/hub ...

我已经尝试过但没有运气:

  • 浏览器字段中的数组browser: {firefox, chrome},配置解析器不喜欢它
  • 具有多个名称browser: 'firefox, chrome' 的字符串,认为我有一个以字符串命名的浏览器sigh
  • 给我的 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
  • 水貂 1.5

【问题讨论】:

    标签: grid selenium-webdriver behat mink


    【解决方案1】:

    我已经完成了一个跨浏览器的实现,我发现的解决方案是使用 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

    【讨论】:

    • 我目前正在使用 behat 配置文件在我们的测试中分离产品功能:默认:...扩展: ... feature1:过滤器:标签:“@feature1” feature2:过滤器:标签:“@feature2” 这样做的原因是允许我们使用 [ParallelRunner][1] Behat 的扩展并行运行多个功能测试。你认为这两件事可以一起工作吗?干杯,[1]:github.com/shvetsgroup/ParallelRunner
    • @manei_cc 好吧,真的,我不知道,你需要试试。我成功地使用 ant 在同一功能上运行跨浏览器,当我调用 SuperContext 时使用Feature Context,所有功能 - 或多或少 30 - 依次运行,一个接一个。
    • 为了记录,我已经设法使这些 selenium 节点使用“GNU 并行 (gnu.org/software/parallel)”并行运行,接受 Jakub Salas (zalas.eu/running-behat-in-parallel-with-selenium-grid) 发布和 @thiago-franca 合作为了这个想法。这种方法的问题是我仍然需要根据我想要测试的浏览器创建几个 behat.yml 文件,然后我可以调用 behat(使用 --config 选项),如 Zalas 帖子中所述。如果有人登陆这里,Behat 的 google 组中也有一个相关问题:bit.ly/R4iejc
    • @manei_cc 太好了...我会关注这个小组,看看你的进步并在可能的情况下提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多