Как я могу установить флажок, используя HtmlAgilityPack

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, но я не могу понять, как его щелкнуть.

Любые предложения будут полезны.

Принятый ответ

Я не думаю, что вы можете использовать HtmlAgilityPack, чтобы проверить флажок. Да, вы можете изменить dom в объекте doc чтобы этот флажок был установлен, и установите DocumentText элемента управления веб-браузером как ваш htmldocument, но я сомневаюсь, что это то, что вы хотите сделать.

Если у вас есть страница, открытая в webBrowser , вы можете использовать что-то вроде этого:

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

Но это будет только первый флажок.

Если вы хотите, чтобы все флажки были выбраны, вы можете либо перебрать вышеуказанный код для всех элементов ввода, либо использовать javascript на стороне сервера, чтобы проверить все флажки, когда установлен первый флажок.

Опять же, я могу помочь вам, если вы объясните, что вы хотите немного более четко.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему