2016-07-28 68 views
0

所以我试着去运行需要什么似乎是一个基本的HTTP认证在Rails的网站一些自动化测试:水豚/骚灵HTTP认证

enter image description here

进出口使用本地主机:3000我的主机。

Capybara.app_host = "http://localhost:3000" 
Capybara.server_host = "localhost" 
Capybara.server_port = "3000" 

IM在Firefox中运行这个,现在,我试着做http://username:[email protected]:3000但它通常发出警告“钓鱼网站”,但我继续反正,但它不工作和HTTP弹出仍然出现。 (我听说很多浏览器都禁用了这个功能)。

我知道Selenium有办法解决它,但Poltergeist呢?或任何内置在水豚中的东西。

我看到这里提到的前一个问题:HTTP basic auth for Capybara

但看到如何上面的网址不起作用这似乎并没有擦出火花。

编辑:当前骚灵驱动程序设置:

options = { 
     :timeout => 45, 
     :phantomjs_options => ["--proxy-auth="] 
    } 
    Capybara.register_driver :poltergeist do |app| 
     Capybara::Poltergeist::Driver.new(app, options) 
    end 
    Capybara.default_driver = :selenium 
    Capybara.javascript_driver = :poltergeist 

回答

1

可以在鬼驱人访问该页面之前尝试

page.driver.basic_authorize(username, password) 

。这将设置在phantomjs用户名和密码,并在“授权”头

+0

我希望这会很简单,不幸的是我得到一个“无法到达服务器”。由于数据库的原因,这个应用程序在本地运行速度非常慢......但只要在它之前设置的用户名/密码应该不重要?我确定我的超时时间也很长。 (它在硒上运行,当我在运行时手动输入用户名/密码) – msmith1114

+0

实际上,我认为问题在于它是作为代理站点运行的,所以正常的http头不起作用。 – msmith1114

+0

@ msmith1114与poltergeist有page.driver.headers =/add_headers/add_header,所以你可以设置任何你需要的标题 - 虽然“无法到达服务器”并不真正听起来像一个身份验证拒绝 - 你设置了什么超时? (在驱动程序注册中设置了Poltergeists超时选项) –

1

折腾了另一种解决方案在这里,对于那些硒+ Firefox的工作:

当您访问需要HTTP基本身份验证,Firefox的网页会显示一个对话框询问用户名和密码。

enter image description here

硒不给你很多的选项与对话框交互,但它有一个accept_alert方法,该方法可选按键。

文本输入到这两个领域的一次,你可以使用Selenium的tab键码:

tab = Selenium::WebDriver::Keys::KEYS[:tab] 
SESSION.accept_alert(with: username + tab + password) 

这是我能得到的工作唯一的解决办法 - 我使用Selenium的remote驱动程序,它不具备支持HTTP基本身份验证内置。

如果一切都失败了,请给我一个镜头。