2015-12-19 27 views
0

您好,我在C#中遇到問題。我試圖點擊並選擇一個網站上的單選按鈕,但我無法弄清楚如何使它工作。C#WebBrowser選擇單選按鈕

下面是從我的網站的HTML:

<tr class="trwc"> 
    <td id="row1" class="SelectBoxRow" > 
     <input style="display:none;" type="radio" name="valg" value="1" /> 
     <strong>Option1</strong> 
    </td> 
</tr> 

<tr class="trwc"> 
    <td id="row2" class="SelectBoxRow" > 
     <input style="display:none;" type="radio" name="valg" value="2" /> 
     Option2 
    </td> 
</tr> 

<tr class="trwc"> 
    <td id="row3" class="SelectBoxRow" > 
     <input style="display:none;" type="radio" name="valg" value="3" /> 
     Option3 
    </td> 
</tr> 

我想我的代碼,點擊/選擇與價值單選3。

我曾經嘗試這樣做沒有任何成功:

webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("valg")[0].InvokeMember("click"); 

我可以告訴我的代碼在我嘗試之前不會工作,但我無法確定如何使其正常工作。

回答

2

你的代碼的工作,但在你的HTML你有

style="display:none" 

的單選按鈕,這樣你就不能按他們。

另外,如果你要選擇與value = 3一個你將不得不更改您的代碼

webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("valg")[2].InvokeMember("click") 

所以索引指向第三單選按鈕。

或者,如果你不能確定價值3無線電的索引,或者它可能會改變,你可以做這樣的事情:

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("valg")) 
{ 
    if (el.GetAttribute("value") == "3") 
    { 
    el.InvokeMember("click"); 
    } 
} 

或LINQ

webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("valg").OfType<HtmlElement>().First(el => el.GetAttribute("value") == "3").InvokeMember("click");