Watir 語法(Web Application Testing in Ruby)

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 #
使用namevalue屬性設置複選框


#
清除複選框

ie.checkbox(:name, "checkme").clear
ie.checkbox(:name, "checkme", "1").clear #
使用namevalue屬性清除複選框


對應的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 #
使用nameid屬性設置單選框


#
使用name屬性清除單選框

ie.radio(:name, "clickme").clear
ie.radio(:name, "clickme", "1").clear #
使用nameid屬性清除單選框


對應的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
TableTableBodyTableRowTableCell這幾個類,都提供了一個索引方法"[](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/)              #正則表達式匹配獲取

發佈了33 篇原創文章 · 獲贊 24 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章