$ The notes for watir $
Developing Test Cases
1. Open an editor
2. take the .rb as your file extention
3. put the “require ‘watir’†into the first line
4.打开æµè§ˆå™¨å¹¶è½¬åˆ°è¦æµ‹è¯•的应用
5.ä¸Žä¹‹äº¤äº’å¹¶è®¾è®¡ä½ çš„testcase
6.在测试脚本ä¸ä½¿ç”¨Watir方法
7.验è¯ç»“æžœ
Interacting With a Web Page
When Watir is used as a test script, the interaction with a web page is realized by submitting message to the element on the web page:
ie.text_field(:name , “qâ€).set(â€bluescorpioâ€)
ie.button(:value , “Click Meâ€).click
Watir Syntax
1.使用Watir工具,需è¦åœ¨è„šæœ¬ä¸åŠ ä¸Š
require ‘watir’
2.创建一个IE的测试实例
ie = Watir::IE.new
æˆ–è€…åœ¨åˆ›å»ºçš„åŒæ—¶ç›´æŽ¥è½¬åˆ°é¡µé¢
ie = Watir::IE.start(â€http://mytestsiteâ€)
Watir使用startæ–¹æ³•åŒæ—¶åˆ›å»ºä¸€ä¸ªæµè§ˆå™¨å®žä¾‹å¹¶è½¬åˆ°ä¸€ä¸ªé¡µé¢ã€‚
3. Web navigation
ie.goto(â€http://mytestsiteâ€)
4.æ“纵Web页é¢å¯¹è±¡
4.1超链接
4.1.1使用Text属性点击超链接
ie.link(:text , “Pickaxeâ€).click
对应的HTML代ç 为:
<a href=”http://pragmaticprogrammer.com/titles/ruby/”>Pickaxe</a>
4.1.2使用URL属性点击超链接
ie.link(:url , “http://pragmaticprogrammer.com/titles/ruby/â€).click
对应的HTML代ç 为:
<a href=”http://pragmaticprogrammer.com/titles/ruby/”>Test Site</a>
4.2å¤é€‰æ¡†
4.2.1使用name属性设置å¤é€‰æ¡†
ie.checkbox(:name, “checkmeâ€).set
4.2.2使用name属性清除å¤é€‰æ¡†
ie.checkbox(:name, “checkmeâ€).clear
4.2.3使用nameå’Œvalue属性设置å¤é€‰æ¡†
ie.checkbox(:name, “checkmeâ€, “1″).set
4.2.4使用nameå’Œvalue属性清除å¤é€‰æ¡†
ie.checkbox(:name, “checkmeâ€, “1″).clear
对应的HTML代ç 为:
<input maxlength=”67108863″ name=”checkme” size=”20″ type=”checkbox” value=”1″ />
4.3å•选框
4.3.1使用name属性设置å•选框
ie.radio(:name, “clickmeâ€).set
4.3.2使用name属性清除å•选框
ie.radio(:name, “clickmeâ€).clear
4.3.3使用nameå’Œid属性设置å•选框
ie.radio(:name, “clickmeâ€, “1″).set
4.3.4使用nameå’Œid属性清除å•选框
ie.radio(:name, “clickmeâ€, “1″).clear
对应的HTML代ç 为:
<input id=”1″ maxlength=”67108863″ name=”clickme” size=”20″ type=”radio” value=”on” />
4.4下拉框
4.4.1使用name属性和值æ¥è®¾ç½®ä¸‹æ‹‰æ¡†
ie.select_list( :name , “selectmeâ€).select(â€is funâ€)
4.4.2使用nameå±žæ€§å’Œå€¼æ¥æ¸…除下拉框
ie.select_list( :name , “selectmeâ€).clearSelection
对应的HTML代ç 为:
<select name=”selectme”> <option selected=”65535″></option><option>Web Testing</option><option>in Ruby</option><option>is fun</option></select>
4.5在Web页é¢ä¸è¾“入数æ®
4.5.1使用文本输入框的那么属性设置输入内容
ie.text_field(:name, “typeinmeâ€).set(â€Watir Worldâ€)
4.5.2清空文本输入框
ie.text_field(:name, “typeinmeâ€).clear
对应的HTML代ç 为:
<input maxlength=”67108863″ name=”typeinme” size=”20″ type=”text” />
4.6从Web页é¢ä¸Šæäº¤æ•°æ®
4.6.1按钮
4.6.1.1é€šè¿‡å€¼æˆ–æ ‡é¢˜å±žæ€§ç‚¹å‡»æŒ‰é’®
ie.button(:value, “Click Meâ€).click
4.6.1.2通过name属性点击按钮
ie.button(:name, “clickmeâ€).click
对应的HTML代ç 为:
<input maxlength=”67108863″ name=”clickme” size=”20″ type=”button” value=”Click Me” />
4.6.2 Forms
4.6.2.1 buttons in the forms
using value or title     ie.button(:value, “Submitâ€).click
对应的HTML代ç 为:
<form action=”submit” accept-charset=”UNKNOWN” enctype=”application/x-www-form-urlencoded” method=”post”> <input maxlength=”67108863″ size=”20″ type=”submit” value=”Submit” /></form>4.6.2.2表å•ä¸çš„图片按钮
使用那么属性
ie.button(:name, “doitâ€).click
following are the corresponding HTML codes:
<form action=”submit” accept-charset=”UNKNOWN” enctype=”application/x-www-form-urlencoded” method=”post”> <input maxlength=”67108863″ name=”doit” size=”20″ src=”http://www.gnpc.cn/wp-admin/images/doit.gif” type=”image” /></form>4.6.2.3没有按钮的表å•
Watir can submit a form by identifying it by its name, action and method attributes.
å¯ä»¥é€šè¿‡nameã€action以åŠmethodå±žæ€§æ¥æäº¤è¡¨å•
ie.form(:name, “loginformâ€).submit
ie.form(:action, “loginâ€).submit
对应的HTML代ç 为:
<form action=”login” accept-charset=”UNKNOWN” enctype=”application/x-www-form-urlencoded” method=”get”> <input maxlength=”67108863″ name=”username” size=”20″ type=”text” /></form>4.6.3框架
ie.show_frameså¯ä»¥æ‰“å°å‡ºå½“å‰é¡µé¢æ¡†æž¶çš„æ•°é‡å’Œåç§°
Watirå…许通过å称属性æ¥è®¿é—®æ¡†æž¶ï¼Œå¦‚ie.frame(â€menuâ€)
如果è¦è®¿é—®menu框架ä¸çš„一个超链接,å¯ä»¥ie.frame(â€menuâ€).link(:text, “Click Menu Itemâ€).click
4.6.4 embedded frame
ie.frame(â€frame1″).frame(:name, “nested_frameâ€)
4.6.5新窗å£
一些Webåº”ç”¨ä¼šå¼¹å‡ºæ–°çª—å£æˆ–打开一个新窗å£ï¼Œå¯ä»¥ä½¿ç”¨attach方法æ¥è®¿é—®å¹¶æŽ§åˆ¶æ–°çª—å£ã€‚é€šè¿‡æ ‡ç¤ºæ–°çª—å£çš„URL或者titleæ¥è®¿é—®ã€‚
ie2 = Watir::IE.attach(:url, ‘http://mytestsite’)
ie3 = Watir::IE.attach(:title, ‘Test New Window’)
Regx is also an alternative   ie4 = Watir::IE.attach(:title, /Test New/)
注æ„:ä¸è¦æŠŠæ–°çª—å£åˆ†é…åˆ°ä½ çš„ieå˜é‡ï¼Œæœ€å¥½ç»™æ–°çª—å£ä¸€ä¸ªä¸åŒçš„åå—
5. verify the test result
比较好的方法是在测试案例ä¸å‡å¦‚验è¯ç‚¹
5.1对象å˜åœ¨
使用Watir方法contains_text
ie.contains_text(â€Reached test verification point.â€)
if ie.contains_text(â€Reached test verification point.â€)
puts: “Test passed. Page contains the text: Reached test verification point.â€
else
puts: “Test failed! Page didn’t contain text: Reached test verification point.â€
end
5.2 using test::unit Assertions
5.2.1需è¦test::unit
require ‘test/unit’
5.2.2创建测试实例
class TC_myTest < Test::Unit::TestCase
…fill in Test Case methods here…
end
5.2.3创建测试用例方法
在测试类ä¸ï¼Œéœ€è¦å£°æ˜Žè±¡ä¸‹é¢çš„æ–¹æ³•:
def test_myTestCase
fill in method body with Watir code and assertion here
end
方法必须以test开头,rubyä¼šéšæœºè¿è¡Œæµ‹è¯•案例,如果需è¦é¡ºåºæ‰§è¡Œï¼Œéœ€è¦åœ¨teståŽåŠ ä¸Šå—æ¯æˆ–æ•°å—æ¥å¼ºè¿«å®ƒé¡ºåºæ‰§è¡Œï¼Œæ¯”如“test_a_mytestâ€
定义测试方法的类:
class TC_myTest < Test::Unit::TestCase
def test_ myTestCase
Watir code and assertion here…
end
def test_anotherTestCase
Watir code and assertion here…
end
def test_aTestCase
Watir code and assertion here…
end
end
5.2.4 Using Assertions
Watir通过在一个asert覆写Watir方法支æŒassertions。
assert(ie.contains_text(â€Reached test verification point.â€))
5.2.5Setup and Teardown
def setup
fill in code that will run before every test case here…
end
def teardown
fill in code that will run after every test case here…
end
6.Tips and Tricks
Running Tests With the Browser Not Visible
Run the tests with a “-b†option if you don’t want the browser to be visible. ex. myTest.rb -b
Related Blogs
- Related Blogs on watir
- Watir Podcast 7: Bret Pettichord (Watir Lead Developer) on FireWatir