Ruby Watir Webdriver帧属性与其他源不一致

Ruby Watir Webdriver帧属性与其他源不一致,ruby,firefox,watir-webdriver,frames,headless-browser,Ruby,Firefox,Watir Webdriver,Frames,Headless Browser,我有一个问题,如果我返回帧的某些属性,它们与Firebug中的属性不匹配。原因是我正在寻找一种方法来确定框架的用途。例如,在www.cnet.com上,他们总共加载了19个帧,其中一些是带有JavaScript的HTML。我想检查一些框架,但不是全部 使用Firebug,我看到了一些关于框架的有趣属性,我想根据这些属性过滤框架 我有以下Ruby代码来举例说明我需要的属性: puts "Tag name: " + frame.attribute_value("tagName") puts "Loc

我有一个问题,如果我返回帧的某些属性,它们与Firebug中的属性不匹配。原因是我正在寻找一种方法来确定框架的用途。例如,在www.cnet.com上,他们总共加载了19个帧,其中一些是带有JavaScript的HTML。我想检查一些框架,但不是全部

使用Firebug,我看到了一些关于框架的有趣属性,我想根据这些属性过滤框架

我有以下Ruby代码来举例说明我需要的属性:

puts "Tag name: " + frame.attribute_value("tagName")
puts "Local name: " + frame.attribute_value("localName")
puts "Node name: " + frame.attribute_value("nodeName")
结果如下:

Tag name: IFRAME
Local name: iframe
Node name: IFRAME
但是,这是Firebug for childNodes/Children在www.cnet.com页面上的输出:

如果我提到Firebug,列表中的第一项具有以下属性:

Tag name: DIV
Local name: div
Node name: DIV
顺便说一句,我在Linux上使用Firefox下的headless水驱动程序


非常感谢您的帮助。

答案是,您所要求的属性与Firefox显示的属性不同

以列表顶部的DIV为例,如果您希望Watir返回“gigya_ruler”,那么您必须请求DIV的ID属性,而不是名称

twitter中心框架也是如此

将所有这些转换为Watir代码将如下所示:

@b = Watir::Browser.new :ff

div = @b.div(index: 0)
puts div.id # => 'gigya_ruler'

frame = @b.iframe(index: 0)
puts frame.id # => 'twttrHubFrameSecure'

你能详细说明一下问题是什么吗?您说watir webdriver与Firebug不匹配。但目前还不清楚Firebug返回了什么,以及这种差异是如何在脚本中造成实际问题的。