2011-12-01 105 views
1

我最近開始使用WatiN來測試網站上的一些內容。從選擇列表中檢索值

我想問一下,是否有可能:如果我的頁面上有一個選擇列表,我可以從字典中檢索文本中的所有值嗎?

就像假設我有一個列表:

<SELECT NAME="mylist" onChange="disp_text()"> 
<OPTION VALUE="m1">Cape Fear 
<OPTION VALUE="m2">The Good, the Bad and the Ugly 
<OPTION VALUE="m3">The Omen 
<OPTION VALUE="m4">The Godfather 
<OPTION VALUE="m5">Forrest Gump 
</SELECT> 

所以我想有這些值<string, string> dictionary.add(m1, "cape fear");字典來...等

是否有可能做華廷?如何?


另一個問題是,當我點擊它打開IE瀏覽器中的一個新的選項卡中的鏈接,我怎麼只關閉新打開的選項卡,並繼續在主頁上做的工作?

+5

如果你有兩個不同的問題,你應該單獨問問他們。 – Otiel

回答

1

這可以幫助你與你的第一個問題

 SelectList region1 = browser.SelectList(Find.ByName("mylist")); 
     Dictionary<string, string> optionsdictionary = new Dictionary<string, string>(); 
     foreach (Option option in region1.Options) 
     { 
      optionsdictionary.Add(option.Value, option.Text); 
     } 

而對於第二個,我想這與Firefox和它的作品,但像Otiel說,你應該張貼獨立的問題。

 browser.GoTo("http://news.google.co.in/nwshp?hl=en&tab=wn"); 
     Link newslink = browser.Link(Find.ByUrl("somelink")); 
     newslink.Click(); 
     FireFox newbrowser = FireFox.AttachTo<FireFox>(Find.ByUrl("somelink")); 
     newbrowser.Close(); 
0

或者,你可以讓LINQ做到爲你努力工作: -

SelectList regionLst = browser.SelectList(Find.ByName("mylist")); 
Dictionary<string, string> optionsDictionary = regionLst.Options.ToDictionary(option => option.Value, option => option.Text); 

只是一個警告的字。這個例子和Ashish提供的例子都依賴於你的選擇列表中沒有重複的「選項值」。 HTH!