从选择列表中检索值

时间:2011-12-01 07:39:24

标签: c# .net watin

我最近开始使用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中打开一个新选项卡,如何仅关闭新打开的选项卡并继续在主页上进行工作?

2 个答案:

答案 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!