2012-09-24 30 views
-1

我有一個響應頁面,其中顯示了一些文本。沒有任何屬性基於我可以從響應中獲得所需的文本。有人可以給我寫一個代碼來做同樣的事情嗎?我在這裏附上了源代碼。如何在ruby watir中提取沒有任何屬性的值

Mux isconnected 
requesting... 
response got 
field id="0" value="0110"field id="3" value="000000"<BR>field id="4" value="000000010000"<BR>field id="6" value="000000010000"<BR> 
Response - Success 
<-- 0110 000326 33444489 

在上述源我想提取[ID = 「0」 值= 「0110」] ,然後使用下一個測試步驟值= 0100。

我的代碼分割文本和僅使用值如下所示

text = 'response got field id="0" value="525XXXXXXXXX66"' 
matcher = text.match(/value="(.+)"/) 
puts matcher.captures.first 

但首先我需要提取需要標籤或文本並分配如在上述功能「文本」。

回答

1

提取前field id="0" value="0110"你可以使用這個表達式

/(field\s+id=".+?"\s+value=".+?")/.match(yourString)[1] 

,並使用第一組。正則表達式中的組允許您在表達式中獲得文本的特定部分,例如,使用正則表達式/ma(.+?)l/manual,您將在第一組中獲得'nua',即/ma(.+?)l/.match('manual')[1]將被歸類爲'nua'。

如果你想獲得一個特定值的ID(如29)和ID總是以前值做到這一點

str=29 
myResult = /field\s+id="#{str}"\s+value="(.+?)"/.match(yourString)[1] 

value\1組(即[1]),從而myResult包含你需要的數字。當然你可以放任何東西。

也看看here,這是你需要的正則表達式的一個工作例子!

編輯:

我想我已經正確地回答了你的問題。您對澄清的進一步要求使我認爲您錯過了完成此任務的編程背景。如果您需要了解其他任何信息,請發表其他問題或花費一些努力來學習您正在使用的編程語言。這個社區(據我瞭解)不歡迎這種行爲。

+0

這不是我想要提取的第一個提交。我實際上必須提取我在這裏沒有提到的Field 29,因爲它太長了。但我需要的是像2或3這樣的指定ID,我需要提取並保存相應的值。我應該是一些如何能夠告訴紅寶石提取這個ID的價值,並將其保存到一些變量,以便我可以在以後的步驟中使用它 – anagraj

+0

當我實現這個我得到一個錯誤。我對ruby很陌生,對實現並不瞭解。這是我得到的錯誤。 auth.rb:126:語法錯誤,意外$ undefined,期待keyword_end newtext = field \ s + id =「38」\ s + value =「(。+?)」 – anagraj

+0

同樣在建議的解決方案中,無法確定你所提及的羣組是什麼,以及你在參考的\ 1中的價值是什麼。要求你引導我認爲相同 – anagraj