0

我一直在寻找解决这个问题的方法,但还没有找到一个可行的方法。我有一个 webBrowser 控件。有一个结构如下的多个下拉列表:

<select name="cars" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab" SELECTED>Saab</option>
  <option value="opel">Opel</option>
  <option value="audi" SELECTED>Audi</option>
</select>

<p>Hold down the Ctrl (windows) / Command (Mac) button to select multiple options.</p>

已经选择了一些选项。我需要选择另一个选项,例如“沃尔沃”。典型的做法是按住 ctrl 键并右键单击该选项。我在看 sendKeys 类,但我不完全确定我做对了。这是我尝试过的:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.Focus();
        SendKeys.Send("^(+)");//sends ctrl-space
    }
}

它似乎没有给项目焦点,所以我不确定 SendKeys 是否工作。

我也试过这个:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.SetAttribute("SELECTED", "");
    }
}

...但这似乎也不起作用。
任何帮助表示赞赏

4

1 回答 1

0

好吧,我很尴尬地说答案非常简单......

显然 SetAttribute 方法不将空字符串作为第二个参数。这是有效的解决方案:

foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("option"))
{
    if (item.InnerText == "Volvo")
    {
        item.SetAttribute("SELECTED", "SELECTED");
    }
}
于 2014-01-15T02:05:51.277 回答