2013-07-18 112 views
2

我有一個Ruby對象@element,我使用.inspect。結果如下訪問Ruby對象中的字符串

#<Watir::Hidden:0x7b61410 located=false selector={:type=>"hidden", :tag_name=>"input", :id=>"foo"}> 

如何訪問"foo"

我試過@element.id(其中找到紅寶石對象ID代替),@element[:id]@element.selector[:id]@element['selector'][:id]

任何幫助嗎?

+0

能不能介紹一下你爲什麼要這麼做擴大?您看到的ID是您在定位元素時指定的ID。例如,您的代碼可能具有'@element = browser.hidden(:id =>'foo')'。 –

回答

1

通常,這些是對象的實例變量。如果他們沒有暴露attr_accessor,那麼你正在觸摸私人數據,這通常是不被接受的。

你總是可以得到這些,如果他們使用類似存儲在一個實例變量:

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

我不會利用這種過於廣泛,這是一個不好的做法,但有時你必須做你該做的事。

+0

'selector'沒有出現在使用'@'進行的檢查中。它看起來不像一個實例變量。或者,是嗎?我不知道Waitr;它的檢查特別? – sawa

+0

如有疑問,請查看相關來源。如果他們有一個自定義的'inspect'方法,那麼你需要特別注意這個方法,並且看看'selector ='的輸出是如何派生的。 – tadman

+0

我不像那樣感興趣。你似乎也不是。那麼,我不在乎。 – sawa