Watir 語法(Web Application Testing in Ruby)
# watir的安裝
watie的安裝請查看 -> Ruby library的安裝
# 使用Watir工具,需要在腳本中加上
require 'watir'
# 創建一個IE的實例
ie = Watir::IE.new
或者在創建的同時直接轉到頁面
ie = Watir::IE.start('http://www.text.com/')
Watir使用start方法同時創建一個瀏覽器實例並轉到一個頁面。
IE瀏覽速度
ie.speed = :fast
ie.speed = :slow
# 頁面導航
ie.goto('http://www.text.com/')
注: ie.goto還可以運行javascript的代碼如: ie.goto("javascript: ie.document.write("Hello World");")
# 取得當前網頁的網址
ie.url
# 點擊超鏈接
ie.link(:text , "Pickaxe").click
ie.link(:href, /http:////pragmaticprogrammer/.com/).click
ie.link(:name => 'foo', :index => 1).click
# 超鏈接的uri
ie.link(:text , "Pickaxe").href
ie.link(:index, 1).href
ie.link(:text => "reply", :index => 2).href
# 超鏈接的文本
ie.link(:href , /http:////pragmaticprogrammer/.com/).text
對應的HTML代碼爲:
<a href='http://pragmaticprogrammer.com/titles/ruby/'>Pickaxe</a>
# img標籤
ie.image(:name, 'image').src
ie.image(:index, 2).src
對應的HTML代碼爲:
<img name = img src='http://pragmaticprogrammer.com/titles/ruby/top.gif'>
<img name = img src='http://pragmaticprogrammer.com/titles/ruby/head.gif'>
# 設置複選框
ie.checkbox(:name, "checkme").set
ie.checkbox(:name, "checkme", "1").set # 使用name和value屬性設置複選框
# 清除複選框
ie.checkbox(:name, "checkme").clear
ie.checkbox(:name, "checkme", "1").clear # 使用name和value屬性清除複選框
對應的HTML代碼爲:
<input type = "checkbox" name = "checkme" value = "1">
# 設置單選框
ie.radio(:name, "clickme").set
ie.radio(:name=>'clickme', :index=>2).set
ie.radio(:name, "clickme", "1").set # 使用name和id屬性設置單選框
# 使用name屬性清除單選框
ie.radio(:name, "clickme").clear
ie.radio(:name, "clickme", "1").clear # 使用name和id屬性清除單選框
對應的HTML代碼爲:
<input type = "radio" name = "clickme" id = "1">
<input type = "radio" name = "clickme" id = "2">
# 設置下拉框
ie.select_list(:name, "selectme").select('Python') # 使用text屬性和值來設置下拉框
ie.select_list(:name, "selectme").select_value('2') # 使用value屬性和值來設置下拉框
# 使用name屬性和值來清除下拉框
ie.select_list(:name, "selectme").clearSelection
對應的HTML代碼爲:
<select name = "selectme">
<option value = 1>Ruby
<option value = 2>Java
<option value = 3>Python
<option value = 4>C
</select>
# 文本的框設置
ie.text_field(:name, "typeinme").set("Watir World")
# 清空文本輸入框
ie.text_field(:name, "typeinme").clear
對應的HTML代碼爲:
<input type = "text" name = "typeinme">
# 通過值或name屬性點擊button
ie.button(:value, "Click Me").click
ie.button(:name, "clickme").click
對應的HTML代碼爲:
<input type = "button" name = "clickme" value = "Click Me">
# 通過值或name屬性點擊Submit
ie.button(:value, "Submit").click
ie.button(:type, "Submit").click
ie.button(:name, "Submit").click
對應的HTML代碼爲:
<form. action = "submit" name = "submitform" method="post">
<input type = "submit" value = "Submit">
</form>
# 表單中的圖片按鈕
ie.button(:name, "doit").click
對應的HTML代碼爲:
<form. action = "submit" name = "doitform" method="post">
<input type="image" src = "images/doit.gif" name = "doit">
</form>
# 沒有按鈕的表單
ie.form(:name, "loginform").submit # 通過name,action以及method屬性來提交表單
ie.form(:action, "login").submit
對應的HTML代碼爲:
<form. action = "login" name = "loginform" method="get">
<input name="username" type="text">
</form>
# 框架
ie.show_frames可以打印出當前頁面框架的數量和名稱
Watir允許通過名稱屬性來訪問框架,如ie.frame("menu")
如果要訪問menu框架中的一個超鏈接,可以
ie.frame("menu").link(:text, "Click Menu Item").click
# 嵌套框架
ie.frame(:name, "frame1").form(:name, 'form1')
# 新窗口
一些Web應用會彈出新窗口或打開一個新窗口,可以使用attach方法來訪問並控制新窗口。通過標示新窗口的URL或者title來訪問。
ie2 = Watir::IE.attach(:url, 'http://www.text.com/')
ie3 = Watir::IE.attach(:title, 'Test New Window')
也可以使用正則表達式
ie4 = Watir::IE.attach(:title, /Test New/)
注意:不要把新窗口分配到你的ie變量,最好給新窗口一個不同的名字
# 訪問Table元素:
t = $ie.table(:id,"data")
t = Table.new($ie,:id,"data")
t = $ie.table[1]
# tr,td元素
tr = ie.row(:id,"title")
tr = TableRow.new(ie,:id,"title")
td = ie.cell(:id,"name")
td = TableCell.new(ie,:id,"name")
# Watir中Table,TableBody,TableRow,TableCell這幾個類,都提供了一個索引方法"[](index)"來定位其下一層的子元素對象,該方法爲實例方法,"index"爲傳入的參數,索引值從1開始,而非從0開始。
用法如下:
以table的第一行,第一個元素爲例:
tr1 = t.[](1)
td1 = tr1.[](1)
也可以連續訪問:td1 = t.[](1).[](1)
如果td中還有其他元素,可以通過td的實例方法直接訪問,以checkbox爲例:
cb = td1.checkbox(:id,'navigate_id').click
對於以上所提到的對象,都是從Element繼承而來,所以click,enabled?,exists?,fireEvent,flash,focus等方法都直接可以使用。
如果你的td元素定位準確了,且鼠標響應事件沒有錯誤的話,那麼應該能看到點擊後的效果。
建議多查一下Watir的API Reference http://wtr.rubyforge.org/rdoc/
代碼如下:
t = ie.table(:id,"CoolMenu2menutable")
td_logout=t.[](1).[](16)
先找到Table,再索引TR,再索引到TD
# 運行Ruby時不顯示browser方法
運行Ruby程序文件時在後面加 "-b"
ex:
test.rb -b
也可以做成.bat文件
ex: test.bat
ruby.exe test.rb -b
# 獲取隱含對象值
<INPUT type=hidden value="您的Email" name="field1">
方法:values = ie.hidden(:name, 'field1').value
# 獲取窗口對象
方法1: ie2 = Watir::IE.attach(:url,'http://www.google.cn/') #根據URL獲取
方法2: ie3 = Watir::IE.attach(:title,'Google') #根據窗口標題獲
方法3: ie4 = Watir::IE.attach(:title, /google.cn/) #正則表達式匹配獲取
Watir 語法(Web Application Testing in Ruby)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.