如何使用HtmlAgilityPack单击复选框

时间:2015-05-14 16:59:12

标签: c# html-agility-pack

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>

我正在尝试点击第一个显示“全选”的复选框,以便选中下面的所有其他复选框。

我认为我的C#代码假设加载HtmlNode但我无法弄清楚如何点击它。

任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您想要选中所有复选框,您可以为所有输入元素迭代上述代码,或者在选中第一个复选框时使用服务器端javascript检查所有复选框。

同样,如果你能更清楚地解释一下你想要什么,我可以帮助你。