Comment puis-je cliquer sur une case à cocher en utilisant HtmlAgilityPack

c# html-agility-pack

Question

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>

J'essaie de cliquer sur la première case à cocher qui dit "Tout sélectionner" pour que toutes les autres cases ci-dessous soient cochées.

Je pense que mon code C # est supposé charger le HtmlNode mais je ne peux pas comprendre comment cliquer dessus.

Toute suggestion serait utile.

Réponse acceptée

Je ne pense pas que vous puissiez utiliser HtmlAgilityPack pour cocher une case à cocher. Oui, vous pouvez modifier le dom dans votre objet doc afin que la case à cocher soit cochée et que le paramètre DocumentText du contrôle Webbrowser soit défini comme votre document htmldocument, mais je doute que vous souhaitiez le faire.

Si la page est ouverte dans le webBrowser , vous pouvez utiliser quelque chose comme ceci:

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

Mais cela ne sélectionnera que la première case à cocher.

Si vous souhaitez que toutes les cases à cocher soient sélectionnées, vous pouvez itérer le code ci-dessus pour tous les éléments en entrée ou utiliser le javascript côté serveur pour cocher toutes les cases à cocher lorsque la première case est cochée.

Encore une fois, je peux vous aider davantage si vous expliquez un peu plus clairement ce que vous voulez.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi