<div class="button-div"> <input type="hidden" name="act" value="insert"> <input type="hidden" name="old_title" value=""> <input type="hidden" name="id" value=""> <input type="submit" value=" 確定 " class="button"> <input type="reset" value=" 重置 " class="button"> </div>
@@b.button(:name=>"button").click 怎么不行?
或者是封裝了好多層的控件怎么捕獲:

其實在基於Ruby的watir-webdriver自動化測試方案與實施(三)中有所介紹,這里再詳細說說。
http://www.cnblogs.com/Javame/p/4164471.html
對於這樣的控件怎么捕獲,watir-webdriver提供了兩種捕獲方式:
1.遞歸式
我們可以從父級逐步定位,例如圖片多層封裝,我們就可以從第一個div開始,
@@b.div(:class=>"").divs[3].spans[0]....
@@b.dv是父級,divs[3]是父級以下第四個div,記住watir-webdriver區別與watir,數組下標從0開始,watir是從1開始。
spans[0]是父級以下第四個div下面的第一span,就這樣一級一級往下定位。
2.xpath
xpath很簡單,chrome自身提供了xpath捕獲工具

我們只需要在代碼里使用即可,例如:
@@b.a(:xpath=>"//*[@id='blackListTable']/tbody/tr/td[4]/a").click @@b.div(:class=>"detail").inputs[1].click
原始的xpath里面是雙引號:
//*[@id="blackListTable"]/tbody/tr/td[4]/a
注意一點,雙引號里面包着單引號,單引號里面包着雙引號,這個是定律!
特殊控件與異常行為講完了,再來談談頁面元素捕獲的問題。
比如說我們博客園首頁

我想提取出“找找看”這三個字,怎么解決?
其實watir-webdriver提供了“.text”執行事件,看代碼:
案例一:
d = b.div :class => 'ss-form-desc ss-no-ignore-whitespace'
puts d.text
案例二:
a = b.a(:xpath=>"//*[@id='blackListTable']/tbody/tr/td[4]/a").text puts a
案例三:
Value = ie.link(:id=>’xxx’).attribute_value(“href”)
PS一個小心得:
在很多情況下,一些控件是隱藏的,需要促發某些事件才會顯示,例如:
![]()

該刪除按鈕就是需要觸發鼠標點擊或移動事件才會顯示,如果沒有觸發ruby將會提示異常錯誤。
根據以上信息,我們可以這么設計實現:
#模擬鼠標在改div上點擊一下,不就可以觸發刪除控件了嗎...
b.div(:class=>"detail").inputs[1].click #點擊刪除 b.button(:class=>"deleteBtn").click
o(∩_∩)o 哈哈,是不是開始覺得自動化寫起來也開始有些簡單了呢...
