2010-07-12 136 views
3

我想驗證我的表單字段都使用Selenium有關聯的標籤,但是我在抓取頁面上所有表單字段時遇到問題。 get_all_fields只獲取文本字段;我沒有辦法還搶了密碼,收音機,複選框等用紅寶石中的硒遍歷所有表單字段

我是想這樣的事情:

num_fields = Integer(selenium.get_xpath_count("//input")) 

1.upto(num_fields) do |field_number| 
    input_id = selenium.get_attribute("//input[#{field_number}]@id") 

    selenium.element?("css=label[for=#{input_id}]") 

end 

的問題是,//輸入[1]不工作;根據頁面,輸入嵌套在各種標記中。

有沒有辦法使用硒定位器一般抓住第一,第二等輸入?

回答

2

嘗試使用//body/descendant::input[#{field_number}]

1

瞭解XPath的工作原理可以幫助進行這種測試;戴夫亨特的建議//body/descendant::input[#{field_number}]是相當不錯的; descendant::input部分將返回field_number將索引到的數組。

還有其他的XPath軸也會給出數組 - 你可能也想使用form元素作爲後代的開始而不是主體。

唯一的缺點是xpath表達式每次都會在循環中得到評估。如果你有很多輸入控件,或者IE瀏覽器這樣的慢速瀏覽器,這可能需要相當長的時間 - 尤其是如果你有其他標準檢查的話。您最好使用selenium.get_html_source並開發WebStandardsChecker類來一次評估頁面。