Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how do I retrieve list of element attributes using watir webdriver

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
like image 806
yannb Avatar asked Feb 20 '23 03:02

yannb


1 Answers

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"]
like image 121
Justin Ko Avatar answered May 01 '23 07:05

Justin Ko