Capybara中的身份验证问题

时间:2013-02-27 12:37:49

标签: authentication cucumber capybara capybara-webkit

我正在测试登台服务器上的一项功能,该功能需要基本身份验证才能访问该站点。我使用以下命令运行它:

Capybara.app_host = "http://user:password@this.isanexample.com"

在方案中的某一点,我访问使用https而不是http的页面,并要求我再次输入用户和密码才能继续。如果我再次使用访问会很容易,但我实际上想要点击链接...

我怎样才能超越这个?我已经用疯狂的谷歌搜索了,但无法真正找到有效的解决方案。

我发现了这个:http://theadmin.org/articles/test-http-basic-authentication-in-rails/,但我不知道如何实现它。我对这一切都很陌生,所以我可能会错过这一点。

有人能指出我正确的方向吗?

这是我的代码:

env.rb

require 'capybara/cucumber'

Capybara.app_host = "https://user:password@this.isanexample.com"
Capybara.default_driver = :selenium
Capybara.default_wait_time = 5
Capybara.ignore_hidden_elements = true
Capybara.current_session.driver.browser.manage.window.resize_to(1024, 1000)

checkout_steps.rb(删节)

Given /^I am on the main page$/ do
  visit('/')
end

When /^I navigate to the page with the available boxes$/ do
    page.find(:xpath, "//a[contains(@href,'how-it-works')]").click
    page.find(:xpath, "//a[contains(@class,'join')]").click
end

When /^I choose a monthly subscription$/ do
    page.find(:xpath, "//span[contains(@class,'title') and .[contains(., 'Unbefristetes Abo')]]").click
    page.find_button("Jetzt Bestellen").click
end

1 个答案:

答案 0 :(得分:0)

我通过删除网站本身的身份验证解决了这个问题。如果测试在公司网络内运行,则身份验证弹出窗口将不再显示。事实证明,这在很多方面都是更好的解决方案。