访问Ruby对象中的字符串

访问Ruby对象中的字符串,ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,我有一个Ruby对象@element,我在上面使用了。结果如下 #<Watir::Hidden:0x7b61410 located=false selector={:type=>"hidden", :tag_name=>"input", :id=>"foo"}> #“hidden”,:tag\u name=>“input”,:id=>“foo”}> 如何访问“foo” 我尝试了@element.id(它会找到ruby对象id)、@element[:id]和@el

我有一个Ruby对象
@element
,我在上面使用了
。结果如下

#<Watir::Hidden:0x7b61410 located=false selector={:type=>"hidden", :tag_name=>"input", :id=>"foo"}>
#“hidden”,:tag\u name=>“input”,:id=>“foo”}>
如何访问
“foo”

我尝试了
@element.id
(它会找到ruby对象id)、
@element[:id]
@element.selector[:id]
@element['selector'][:id]
等等


有什么帮助吗?

通常这些都是对象的实例变量。如果他们没有公开一个
attr\u访问器
,那么你接触的是私人数据,这通常是不受欢迎的

如果它们存储在实例变量中,则始终可以通过以下方式获得:

@element.instance_variable_get('@selector')[:id]

我不会太广泛地使用它,这是一种不好的做法,但有时您必须执行您必须执行的操作。

您可以使用以下命令获取属性值:


选择器
不会出现在带有
@
的检查中。它看起来不像一个实例变量。或者,是吗?我不知道服务员的事;其检查是否特殊?如有疑问,请查看相关来源。如果他们有一个自定义的
inspect
方法,那么您需要特别注意,看看
selector=
的输出是如何派生出来的。我对此不感兴趣。你看起来也不是。好吧,那我不在乎。你能详细说明你为什么要这么做吗?您看到的id是您在定位元素时指定的id。例如,您的代码可能具有
@element=browser.hidden(:id=>'foo')
@element.attribute_value("id")