解决方案 1 - Watir-Webdriver 等效项:
与您在 selenium-webdriver 中所做的等效操作是:
browser.elements( :tag_name => "g" )
因此,您可以执行以下操作来输出每个元素的文本:
browser.elements( :tag_name => "g" ).each do |x|
puts g.text
end
解决方案 2 - 添加对 G 元素的支持:
需要 watir-webdriver 后,添加以下代码:
module Watir
module Container
def g(*args)
G.new(self, extract_selector(args).merge(:tag_name => "g"))
end
def gs(*args)
GCollection.new(self, extract_selector(args).merge(:tag_name => "g"))
end
end
class G < Element
end
class GCollection < ElementCollection
def element_class
G
end
end
end
然后您可以像对待任何其他元素一样对待“g”。例如:
puts browser.g(:index, 0).text
browser.gs.each{ |x| puts x.text }
G 和 GCollection 类将支持所有标准元素方法。如果有特定于该元素的内容,您可以向类添加其他方法。
更新 - 添加自定义方法的示例:
要获取光标样式,您可以向 G 类添加一个方法,如下所示:
class G < Element
def cursor_style()
assert_exists
return @element.style("cursor")
end
end
然后,这将允许您获取光标属性,如下所示:
puts browser.g(:index, 0).cursor_style
#=> move
任何与元素交互的自定义方法都需要以assert_exists 开头。然后,在该方法中,您可以使用 @element 变量来处理该元素。
请注意,由于 G 元素继承自 Element 类,因此您还可以使用内置样式方法:
puts browser.g(:index, 0).style("cursor")
#=> move