4

我正在尝试编写一个 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
4

3 回答 3

5

我见过人们使用 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"]
于 2012-09-19T14:19:10.040 回答
2

@Željko-Filipin 的答案可能已经过时了......他链接到的文档,截至 15 年 8 月,列出attribute_value了一种提取 DOM 元素属性值的方法。

我有commonwatir-4.0.0watir-webdriver-0.6.11和 Ruby 2.2.2 - 例如,上述方法提取标签hrefa

于 2015-08-23T22:19:05.283 回答
1

你想做什么?

据我所见,Element类没有#attributes方法:http ://watir.github.com/watir-webdriver/doc/Watir/Element.html

您可以获取元素的 HTML 并对其进行解析:

browser.element.html
于 2012-09-19T12:12:36.747 回答