我不得不在页面中处理一些带有<g>标签的图形项目.我可以做这样的事情,通过放入selenium webdriver找到它们:
browser.wd.find_elements( :tag_name => "g" )
Run Code Online (Sandbox Code Playgroud)
什么是watir webdriver的等价物?
另外,我如何将这些硒元素转换为watir元素?
我能否<g>以某种方式在本地添加对标签的支持?
解决方案1 - Watir-Webdriver等效:
相当于你在selenium-webdriver中所做的是:
browser.elements( :tag_name => "g" )
Run Code Online (Sandbox Code Playgroud)
所以你可以做这样的事情来输出每个元素的文本:
browser.elements( :tag_name => "g" ).each do |x|
puts g.text
end
Run Code Online (Sandbox Code Playgroud)
解决方案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
Run Code Online (Sandbox Code Playgroud)
然后你可以像对待任何其他元素一样对待'g'.例如:
puts browser.g(:index, 0).text
browser.gs.each{ |x| puts x.text }
Run Code Online (Sandbox Code Playgroud)
G和GCollection类将支持所有标准元素方法.如果存在特定于该元素的内容,则可以向该类添加其他方法.
更新 - 添加自定义方法的示例:
要获取光标样式,您可以向G类添加一个方法,如下所示:
class G < Element
def cursor_style()
assert_exists
return @element.style("cursor")
end
end
Run Code Online (Sandbox Code Playgroud)
这将允许您像这样获取游标属性:
puts browser.g(:index, 0).cursor_style
#=> move
Run Code Online (Sandbox Code Playgroud)
与元素交互的任何自定义方法都需要以assert_exists开头.然后,在该方法中,您可以使用@element变量处理该元素.
请注意,因为G元素继承自Element类,所以您也可以使用内置样式方法:
puts browser.g(:index, 0).style("cursor")
#=> move
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |