寻找与黄瓜测试PHP相当的“无头浏览器”

时间:2011-02-25 17:48:08

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

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

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

这些中的任何一个都会被归类为“无头浏览器吗?”

  • SimpleTest网络测试
  • Zend_Test_PHPUnit_ControllerTestCase

您如何实施Zend Framework项目的集成测试?

6 个答案:

答案 0 :(得分:3)

如果您将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(我认为不可能)的说明。我还没有尝试过这种方法,所以我不知道它的效果如何。

答案 1 :(得分:3)

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

它应该具有您在上面列出的所有要求,并且它是用PHP编写的。

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

答案 2 :(得分:2)

尝试使用Codeception:http://codeception.com

更新:

就像Capybara,但是使用PHP DSL。使用代码,您可以执行以下操作:

$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 less场景下获得更好的性能(PHPBrowser不执行javascript)

答案 3 :(得分:1)

更新: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

答案 4 :(得分:0)

如果你使用的是Cucumber,你还没有使用过Ruby吗?为什么不使用快速或快速?

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

我建议您查看这两个项目中的一个,以帮助您入门:

Cheesy UI Testing - Corresponding Blog

WatirMelon Page Objects - Corresponding Blog

答案 5 :(得分:0)

首先,您应该使用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