如何使用 HtmlAgilityPack 单击复选框

How can I click a checkbox using HtmlAgilityPack

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(webBrowser.DocumentText);
HtmlNode n = doc.DocumentNode.SelectSingleNode("//*[contains(@class, 'checkbox')]");

<table class="list" cellspacing="0">
<tbody>
  <tr>
    <th width="45" class="checkAll"><input title="Select all" class="checkbox" type="checkbox" value=""></th>

    <th><span>Account</span></th>

    <th><span>Target system</span></th>
  </tr>

  <tr class="checkable">
    <td><input name="item1" class="checkbox" type="checkbox"></td>

    <td><span>sometext1</span></td>

    <td><span>system1</span></td>
  </tr>

  <tr class="checkable odd">
    <td><input name="item2" class="checkbox" type="checkbox"></td>

    <td><span>sometext2</span></td>

    <td><span>stystem2</span></td>
  </tr>

  <tr class="foot">
    <td colspan="4"><input name="SUBMIT" class="submit" type="submit" value="Unlock"></td>
  </tr>
  </tbody>
  </table>

我正在尝试单击第一个显示 "Select all" 的复选框,以便选中下面的所有其他复选框。

我认为我的 C# 代码应该加载 HtmlNode,但我不知道如何单击它。

任何建议都会有所帮助。

我认为您不能使用 HtmlAgilityPack 来选中复选框。是的,您可以更改 doc 对象中的 dom,以便选中该复选框并将网络浏览器控件的 DocumentText 设置为您的 htmldocument,但我怀疑这就是您想要做的。

如果您在 webBrowser 中打开了页面,您可以使用如下内容:

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

但这只会 select 第一个复选框。

如果您想要 select 编辑所有复选框,您可以对所有输入元素重复上述代码,或者在选中第一个复选框时使用服务器端 javascript 来选中所有复选框。

再一次,如果你能更清楚地解释你想要什么,我可以进一步帮助你。