2012-09-18 91 views
4

我想寫一個watir webdriver腳本,它檢索元素的屬性然後獲取它們的值。 給定元素如何檢索使用watir webdriver的元素屬性列表

<input id="foobar" width="200" height="100" value="zoo" type="text"/> 

希望我可以做類似如下:

testElement = $b.element(:id, "foobar") 
    testElement.attributes.each do |attribute| 
    puts("#{attribute}: #{testElement.attribute_value(attribute)}") 
    end 

我希望得到

id: foobar 
    width: 200 
    height: 100 
    value: zoo 
    type: text 
+0

您有問題嗎?也許試試這個:testElement = $ b.element(:id =>「foobar」) –

回答

4

我已經看到了使用JavaScript來獲取的列表屬性。下面顯示瞭如何將方法添加到Watir :: Element以獲取屬性列表(儘管擴展Watir是可選的)。

#Add the method to list attributes to all elements 
require 'watir-webdriver' 
module Watir 
    class Element 
     def list_attributes 
      attributes = browser.execute_script(%Q[ 
       var s = []; 
       var attrs = arguments[0].attributes; 
       for (var l = 0; l < attrs.length; ++l) { 
        var a = attrs[l]; s.push(a.name + ': ' + a.value); 
       } ; 
       return s;], 
       self)  
     end 
    end 
end 

#Example usage 
browser = Watir::Browser.new 
browser.goto('your.page.com') 
el = browser.text_field(:id, 'foobar') 
puts el.list_attributes 
#=> ["width: 200", "type: text", "height: 100", "value: zoo", "id: foobar"] 
+0

賈斯汀,謝謝你正是我所需要的。非常感激。 – yannb

+0

這真的很酷。你甚至可以通過改變2行來使它返回一個Hash:'var s = {};'''var a = attrs [l]; S [a.name] = a.value中;' – joost

2

從@澤爾科 - 菲可能會過時的答案......他鏈接到,作爲八月'15,lists attribute_value作爲提取,那麼,對於一個DOM元素的屬性值的方法的文檔。

我有commonwatir-4.0.0watir-webdriver-0.6.11和Ruby 2.2.2 - 上述方法提取的a標籤的href,例如。

相關問題