我最近开始使用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");
...等等
是否可以使用watin?怎么样?
另一个问题是,当我点击链接时,它会在IE中打开一个新选项卡,如何仅关闭新打开的选项卡并继续在主页上进行工作?
答案 0 :(得分: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();
答案 1 :(得分:0)
或者,你可以让linq为你努力工作: -
SelectList regionLst = browser.SelectList(Find.ByName("mylist"));
Dictionary<string, string> optionsDictionary = regionLst.Options.ToDictionary(option => option.Value, option => option.Text);
只有一句警告。此示例和Ashish提供的示例都依赖于选择列表中没有重复的“选项值”。 HTH!