在启动浏览器时如何处理Rspec中弹出的身份验证

时间:2013-05-09 11:32:12

标签: ruby-on-rails rspec watir-webdriver rautomation

我正在测试的网站要求用户登录,这由网络服务器而不是HTML表单处理,因此它会在浏览器中生成一个身份验证弹出窗口。

我尝试过以下

before(:each) do      
  $browser = Watir::Browser.new :firefox    
  $browser.driver.manage.window.maximize        
  $browser.goto('http://qa.outbidhq.com')   
  popup = RAutomation::Window.new(:title => /Authentication/i)      
  popup.send_keys('XXXXXX') # USER ID 
  popup.send_keys :tab
  popup.send_keys('YYYYYYYYY') # PASSWORD
  popup.send_keys :tab
  popup.send_keys :enter            
  sleep(15) 
end  

但代码不能正常工作........ 在启动浏览器时,我需要处理弹出的用户名和密码窗口.....任何建议??????我是Rspec的新手......使用Ruby

2 个答案:

答案 0 :(得分:1)

RAutomation是一个使用与watir非常相似的API提供UI自动化的库。它理解文本字段,按钮等内容的概念。您可以查看rdoc,或者在学习新代码库时我发现有用的其他内容是查看tests

由于您与之交互的UI位非常简单,因此您可以通过索引来引用内容。

我建议使用IRB进行一些实验,这是尝试事情的最佳方式,看看会发生什么你可以更容易地检查窗口并一次试验一行代码,看看会发生什么。可能你会得到类似的结果(未经测试,我猜测取消按钮是索引0而登录按钮是索引1)

popup = RAutomation::Window.new(:title => /Authentication/i)        
popup.text_field(:index => 0).set('XXXXXX') # USER ID 
popup.text_field(:index => 1).set('YYYYYYYYY') # PASSWORD
popup.button(:index => 1).click 

答案 1 :(得分:1)

您可以在网址中指定HTTP Basic Authentication的用户名和密码:

$browser.goto('http://username:password@qa.outbidhq.com')

在这种情况下,不应出现身份验证对话框,您应该立即进行身份验证。对此功能的支持取决于浏览器本身,因此您可以使用正确的用户名和密码手动尝试,然后再使用Watir进行尝试。