如何从命令行在类似的页面上运行Capybara?

时间:2013-12-18 16:49:27

标签: ruby cucumber capybara

我在不同的网站上有几乎完全相同的webapp版本。

我想做的是在命令行指定网站......

cucumber --server server1 --tags @tests

...

@servers = {'server1' => 'https://www.tests.com', 'server2' => 'https://www.foobar.com'}

...

Background:
Given I am on {#server1}

Scenario: Happy plan
When I go here
And I see this
Then I get that

在多个类似网站上运行相同脚本的最佳方法是什么?可以从命令行运行吗?

2 个答案:

答案 0 :(得分:2)

您最好的选择是使用an environment variable作为您的服务器名称:

cucumber SERVER=server1 --tags @tests

您可以创建一般步骤:

Given I am on the configured test server

然后,在您的步骤定义中,您可以像在任何普通的Ruby代码中那样查看它并将其设置为Capybara的基本URL:

Given /^I am on the configured test server$/ do
  server_name = ENV['SERVER']
  url = @servers[server_name] or raise "Unknown test server: #{server_name}"
  Capybara.app_host = url
end

请注意,使用远程服务器时,您需要使用支持它的Capybara驱动程序,例如Selenium:默认的RackTest驱动程序不支持。您可能还想将run_server设置为false。见https://github.com/jnicklas/capybara#calling-remote-servers

答案 1 :(得分:1)

创建一些配置并在执行脚本之前读取它。

例如,将解析配置的代码放到 features / support / env.rb