关于cucumber中webrat 模拟浏览器事件操作

一些资源 

-  http://gitrdoc.com/brynary/webrat  
-  http://groups.google.com/group/webrat  
-  http://webrat.lighthouseapp.com/  
-  http://github.com/brynary/webrat  
关于触发link 

可以通过文本 title属性,和id属性] 
Ruby代码    收藏代码
  1. <a href="/signup" title="Sign up" id="signup_link">Click here to  
  2.   join!</a>  
  click_link "Click here to join!" # substring text 
Ruby代码    收藏代码
  1. click_link /join/i               # regexp text  
  2. click_link "Sign up"             # substring title  
  3. click_link /sign.*up/i           # regexp title  
  4. click_link /signup.*link/i       # regexp id  
  5. click_link "signup_link"         # exact id  


webrat的源码定义 
Ruby代码    收藏代码
  1. def click_link(text_or_title_or_id, options = {})  
  2.   find_link(text_or_title_or_id).click(options)  
  3. end  



而表单的输入框,可以通过id name属性或者label的inner text属性定位,例子如下: 

输入框包括text fields, password fields和text areas 

 
Ruby代码    收藏代码
  1. #<label for="user[email]">Enter your Email</label><input type="text"  
  2.   name="user[email]" id="user_name">  
  3.   fill_in "user_email":with => "good@example"      # exact id  
  4.   fill_in /user.*email/, :with => "good@example"     # regexp id  
  5.   fill_in "user[email]":with => "good@example"     # substring name  
  6.   fill_in /user[.*mail.*]/, :with => "good@example"  # substring name  
  7.   fill_in "Email":with => "[email protected]"       # substring label text  
  8.   fill_in /enter your email/i, :with => "[email protected]" # regexp label text  

对于隐藏字段的设定 
Ruby代码    收藏代码
  1. # Hidden fields can be set  
  2. set_hidden_field 'user[l337_hax0r]':to => 'true'  


下拉菜单可以通过文本,name属性,label text属性来选中 

Ruby代码    收藏代码
  1. # Select options can be 'selected' by inner text (an exact String or a Regexp  
  2. to match). It can optionally be selected from a particular select field, using  
  3. the usual id, name, or label text.  
  4. select "Free account"  
  5. select "Free account":from => "Account Types"  
  6. select "Free account":from => "user[account_type]"  
  7. select "Free account":from => "user_account_type"  


操作多选框 
Ruby代码    收藏代码
  1. # Check boxes can be 'checked' and 'unchecked'  
  2. check 'Remember me'  
  3. uncheck 'Remember me'  


操作单选框 
Ruby代码    收藏代码
  1. # Radio buttons can be choosen, using the usual label text, name, or id.  
  2. choose "Yes"  
  3.   
  4. click_button "Register"  




Ruby代码    收藏代码
  1.  # check for text in the body of html tags  
  2.  # can be a string or regexp  
  3. assert_contain("BURNINATOR")  
  4. assert_contain(/trogdor/i)  
  5. assert_not_contain("peasants")  
  6.   
  7. # check for a css3 selector  
  8. assert_have_selector 'div.pagination'  
  9. assert_have_no_selector 'form input#name'  


判定页面是否有文字 

Ruby代码    收藏代码
  1. # check for text in the body of html tags  
  2. # can be a string or regexp  
  3. # Matchers are verbs used with auxillary verbs should, should_not, etc.  
  4. response.should contain("BURNINATOR")  
  5. response.should contain(/trogdor/i)  
  6. response.should_not contain("peasants")  
  7.   
  8. # check for a css3 selector  
  9. response.should have_selector('div.pagination')  
  10. response.should_not have_selector('form input#name')  


在范围内的界定, 老猪 上文已经提到selenium不支持 
Ruby代码    收藏代码
  1. # selectors syntax is defined here: http://www.w3.org/TR/css3-selectors/  
  2. within 'div.pagination' do |scope|  
  3.   scope.click_link "1"  
  4. end  
  5.   
  6. within '.shows' do |scope|  
  7.   scope.should contain("NFL")  
  8.   # unfortunately, assertions don't support this currently  
  9. end  
  10.   
  11. within 'form[name="search"] select[name="type"]' do |scope|  
  12.   scope.should have_selector 'option[value="blah"]'  
  13.   scope.should have_selector 'option[value="gah"]'  
  14.   scope.should have_selector 'option[value="eep"]'  
  15.   scope.should have_selector 'input:only-of-type'  
  16.   scope.should have_selector 'input[name="query"]'  
  17.   scope.should have_selector 'input[type="text"]'  
  18. end  

你可能感兴趣的:(关于cucumber中webrat 模拟浏览器事件操作)