c#在WebBrowser控件中的多个下拉列表中选择单个项目

问题描述:

我一直在寻找这个问题的解决方案,但还没有找到一个可行的解决方案。我有一个webBrowser控件。有多个下拉列表,其结构如下:c#在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", ""); 
    } 
} 

...但是这似乎并没有任何工作。
任何帮助表示赞赏

+0

更新:这选择项目,但取消选择过程中的所有其他项目... item.Parent.SetAttribute(“value”,“Volvo”); – smitty1

好了,我不好意思地说,答案是非常简单......

显然setAttribute方法没有考虑一个空字符串作为第二个参数。这是工作的解决方案:

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