【问题标题】:Looking for a "headless browser" equivalent for PHP for Cucumber testing为 Cucumber 测试寻找与 PHP 等效的“无头浏览器”
【发布时间】:2011-07-04 11:48:15
【问题描述】:

我正在尝试使用 Cucumber 为我的 PHP 项目设置一些功能/验收/集成测试。我正在尝试了解实现这些类型测试的最佳方法。

我知道 Selenium 可以测试 javascript,但是 Selenium 很慢,我并不总是需要测试 javascript。我正在寻找与 PHP 等效的“无头浏览器”。

这两种浏览器会被归类为“无头浏览器”吗?

  • SimpleTest 网络测试
  • Zend_Test_PHPUnit_ControllerTestCase

您为实现 Zend Framework 项目的集成测试做了哪些工作?

【问题讨论】:

    标签: zend-framework selenium cucumber simpletest headless-browser


    【解决方案1】:

    如果您将 Cucumber 设置为使用 Webrat,您可以set up Webrat to use Mechanize by default。 Mechanize 本质上是一个无头浏览器。这是我的 env.rb 文件的样子:

    # RSpec
    require 'rspec/expectations'
    
    # Webrat
    require 'webrat'
    
    require 'test/unit/assertions'
    World(Test::Unit::Assertions)
    
    Webrat.configure do |config|
      config.mode = :mechanize
    end
    
    World do
      session = Webrat::Session.new
      session.extend(Webrat::Methods)
      session.extend(Webrat::Matchers)
      session
    end
    

    另外,根据this article,您可以将 Cucumber 设置为使用 Capybara 并将其配置为使用 Celerity(支持 javascript 的无头浏览器)。它还包括有关如何配置 Capybara 以使用 Selenium RC 的说明(我认为这是不可能的)。我还没有尝试过这种方法,所以我不知道它的效果如何。

    【讨论】:

      【解决方案2】:

      为什么不使用 behat (http://behat.org/)?

      它应该有你上面列出的所有要求,并且是用php编写的。

      它有一个 SahiDrvier 来处理“浏览器内”测试,还有一个简单的 php 浏览器。

      【讨论】:

        【解决方案3】:

        试试 Codeception:http://codeception.com

        更新:

        类似于 Capybara ,但使用 PHP DSL。使用 codeception,您可以执行以下操作:

        $I = new WebGuy($scenario);
        $I->wantTo('create wiki page');
        $I->amOnPage('/');
        $I->click('Pages');
        $I->click('New');
        $I->see('New Page');
        $I->fillField('title', 'Hobbit');
        $I->fillField('body', 'By Peter Jackson');
        $I->click('Save');
        $I->see('page created'); // notice generated
        $I->see('Hobbit','h1'); // head of page of is our title
        $I->seeInCurrentUrl('pages/hobbit'); 
        $I->seeInDatabase('pages', array('title' => 'Hobbit'));
        

        您可以使用 Selenium2 进行浏览,也可以使用 PHPBrowser(无头)在 js 较少的场景中获得更好的性能(PHPBrowser 不执行 javascript)

        【讨论】:

          【解决方案4】:

          更新: Akephalos 似乎有一段时间没有更新了,所以它可能不是使用较新版本的 Capybara 的好解决方案。


          使用Capybara(Webrat 的替代品)和Akephalos(无头浏览器)。 Capybara 用于与 Akephalos 互动。

          例如support/env.rb:

          # Capybara configuration (using Akephalos)
          require 'capybara/cucumber'
          require 'akephalos'
          
          Capybara.default_driver = :akephalos
          Capybara.app_host = 'http://your.web.app'
          
          Capybara.register_driver :akephalos do |app|
            # available options:
            #   :ie6, :ie7, :ie8, :firefox_3, :firefox_3_6
            Capybara::Driver::Akephalos.new(app, :browser => :firefox_3_6)
          end
          

          【讨论】:

            【解决方案5】:

            如果您正在使用 Cucumber,您还没有使用 Ruby 吗?为什么不使用 celerity 或 culerity?

            我使用 Cucumber with Celerity 测试了一个 Struts 2 应用程序以及一个 ColdFusion 8 应用程序。基本上,您使用 Celerity 和 JRuby(包装 HtmlUnit)或在原生 ruby​​ 上运行的 Culerity 来驱动您的浏览器。

            我建议查看以下两个项目之一来帮助您入门:

            Cheesy UI Testing - Corresponding Blog

            WatirMelon Page Objects - Corresponding Blog

            【讨论】:

            • 我正在使用 Ruby (Cucumber) 来测试我的 PHP Web 应用程序。我对 celerity 或 culerity 不是很熟悉。你能详细说明它是如何使用的吗?
            【解决方案6】:

            首先,您应该使用Capybara(Webrat 的替代品)。它用于简化和标准化用于与浏览器交互的 DSL,并提供一些不错的功能。

            尽管 Selenium 有点慢,但由于它与 Capybara 捆绑在一起,因此很容易上手。仅供参考:它默认使用 Firefox。

            例如support/env.rb:

            require 'capybara/cucumber'
            
            Capybara.app_host = "http://your.app.com"
            Capybara.default_driver = :selenium
            

            既然您正在使用 Capybara,您应该使用 capybara-webkit driver(一个真正的无头浏览器,在后台使用 Webkit)。涉及一些设置,但一旦你完成了设置,使用 Selenium 会提高速度。

            例如support/env.rb:

            require 'capybara/cucumber'
            
            Capybara.app_host = "http://your.app.com"
            Capybara.default_driver = :webkit
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-08-29
              • 2011-09-24
              • 1970-01-01
              • 2014-05-02
              • 1970-01-01
              • 2011-11-26
              • 1970-01-01
              相关资源
              最近更新 更多