2014-03-13 44 views
3

我對Ruby非常陌生,遇到了一些我無法弄清楚的東西。我試圖編寫一個測試訪問JavaScript中的變量,告訴用戶登陸的頁面類型,但我不知道如何去做。任何幫助或解釋將非常感激。這裏是源(我需要基於該訪問值s.prop5頁面上,作出決定):使用ruby訪問Javascript值

<script language="JavaScript"><!-- 
s.pageName="Outdoor : " 
s.server="" 
s.channel="" 
//s.pageType="" 
s.prop1="" 
s.prop2="" 
s.prop3="" 
s.prop5="Department" 

回答

1

如果您獲得腳本標記的html,則可以使用常規的Ruby字符串方法來解析它,以找到所需的值。

假設script標籤是第一個頁面上,你可以得到腳本標記的HTML有:

browser.script.html 
#=> <script language=\"JavaScript\"><!--\ns.pageName=\"Outdoor : \"\ns.server=\"\"\ns.channel=\"\"\n//s.pageType=\"\"\ns.prop1=\"\"\ns.prop2=\"\"\ns.prop3=\"\"\ns.prop5=\"Department\"\n</script> 

你可以使用正則表達式來查找值:

browser.script.html[/s.prop5="([^"]+)"/, 1] 
#=> "Department" 

由於可能有多個腳本標記,腳本標記沒有有用的標識符,您可能需要遍歷腳本標記直到找到該值:

script = browser.scripts.find { |script| script.html.include?('s.prop5') } 
script.html[/s.prop5="([^"]+)"/, 1] 
#=> "Department" 
+0

這正是我需要的!非常感謝你的解釋。 – user3415796

+0

你會需要Watir,爲此,對不對?看起來大約在一年前有類似的問題:http://stackoverflow.com/questions/15485345/how-get-the-value-of-a-script-tag –

+0

@DaveYarwood,是的,Watir是必需的獲取腳本html(作爲字符串)。 –

0

你可以用正則表達式做到這一點:

src = '<script language="JavaScript"><!-- 
     s.pageName="Outdoor : " 
     s.server="" 
     s.channel="" 
     //s.pageType="" 
     s.prop1="" 
     s.prop2="" 
     s.prop3="" 
     s.prop5="Department"' 

pattern = /s\.prop5\s*=\s*"([^"]*)"/ 

page_type = pattern.match(src)[1] 

This page有關於在Ruby中使用regexp的很多很好的信息。你可以在Ruby中使用正則表達式來做各種令人敬畏的東西!