C#WebBrowser选择单选按钮

本文关键字:单选按钮 选择 C#WebBrowser | 更新日期: 2023-09-27 18:27:37

我在C#中遇到问题。我试图点击并选择网站上的单选按钮,但我不知道如何使其工作。

这是我网站上的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");

在尝试之前,我可以判断出代码不起作用,但我不知道如何使其正常工作。

C#WebBrowser选择单选按钮

您的代码可以工作,但在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");