2011-12-01 81 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!