访问Ruby对象中的字符串
我有一个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
@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")