2009-11-03 37 views
2

我有一個帶網格的網頁,並且某些列在列標題中有一個鏈接,它將按該列對值進行排序[通過往返服務器] 。如何通過鏈接進行循環,然後單擊每個鏈接使用Watir

我想寫一個Watir測試,它將識別那些排序鏈接,並連續單擊每個鏈接。這是一個冒煙測試,確保排序表達式不會產生運行時異常。

我的問題是,(1)確定這些鏈接,(2)連續單擊每個鏈接的最佳方法是什麼?這是我到目前爲止有:

$ie.table(:id, "myGrid").body(:index, 1).each do | row | 
    row.each do | cell | 
    ## todo: figure out if this contains a sort link 
    ## todo: click the link now, or save a reference for later? 
    end 
end 
+0

你能發佈一些相關的HTML嗎? –

回答

1

認爲這將是不可能的,因爲點擊點擊一個鏈接將觸發頁面加載內環路的各個環節,我相信這個無效的其他的Watir鏈接元素。

所以,我建議你採取的鏈接的ID,然後循環對方做點擊。


例如,我會添加一個特定的類到那些排序鏈接和一個有意義的ID。沿線的 東西:

<a id='sortby-name' class='sorting' href='...'>Name</a> 

然後你就可以用這個接他們:

$ie.table(:id, "myGrid").body(:index, 1).each do | row | 
    # pick sorting links' ids 
    sorting_link_ids = row.links.select{|x| x.class_name == "sorting"}.map{|x| x.id} 
end 

然後,你做你的點擊這樣的:

sorting_link_ids.each do |link_id| 
    $ie.table(:id, "myGrid").body(:index, 1).link(:id, link_id).click 
end 

希望幫助!

+0

這正是我最終做的,我只是忘了回來回答我自己的問題:)你是正確的,我們需要確定一個循環中的鏈接,然後在另一個循環中點擊它們。 –