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

标签 ruby cucumber capybara

我在不同站点上有几乎相同版本的网络应用程序。

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

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

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

最佳答案

最好的选择是使用 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

关于ruby - 如何从命令行在类似页面上运行 Capybara?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663817/

相关文章:

cucumber - 引用里面的引用然后我应该看到 cucumber prolmem rails

java - 在运行之前修改Java中的cucumber特征文件

ruby-on-rails - capybara :有时能找到元素,有时找不到

ruby-on-rails - Capybara + Rspec如何匹配标签属性的一部分

ruby-on-rails - Cucumber Capybara 按 id、名称或标签以外的方式查找复选框

ruby - 如何在 sinatra 应用程序中使用 html_escape 文本数据?

ruby - 程序一起工作

ruby - 使捕获正则表达式重复

javascript - 为什么我的 AJAX 请求在 dev 中是 PUT 请求,但在运行测试时是 GET 请求?

ruby-on-rails - 使用 eval 运行 ruby​​ 代码,它是 gems,rails