I am trying to write a watir webdriver script which retrieves the attributes of an element and then gets their values. given element
<input id="foobar" width="200" height="100" value="zoo" type="text"/>
hoping that I can do something like the following:
testElement = $b.element(:id, "foobar")
testElement.attributes.each do |attribute|
puts("#{attribute}: #{testElement.attribute_value(attribute)}")
end
I would hope to get
id: foobar
width: 200
height: 100
value: zoo
type: text
I have seen people using javascript to get the list of attributes. The following shows how you could add a method to Watir::Element to get the list of attributes (though extending Watir is optional).
#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"]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With