Решение 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
person
Justin Ko
schedule
23.05.2012