AngleSharp Отправить форму - PullRequest
       43

AngleSharp Отправить форму

1 голос
/ 20 октября 2019

в приведенном ниже примере

var url = "http://anglesharp.azurewebsites.net/PostUrlencodeNormal";
var config = new Configuration { AllowRequests = true };
var html = DocumentBuilder.Html(new Uri(url), config);
var form = html.Forms[0] as IHtmlFormElement;
var name = form.Elements["Name"] as IHtmlInputElement;
var number = form.Elements["Number"] as IHtmlInputElement;
var active = form.Elements["IsActive"] as IHtmlInputElement;
name.Value = "Test";
number.Value = "1";
active.IsChecked = true;
form.Submit();

И все же он жалуется, что Value не является расширением IHtmlInputElement, вместо этого используйте SetValue

, но SetValues ​​в основном словарь, и у меня нет идейкак использовать это с AngleSharp.

В другом примере, https://anglesharp.github.io/docs/Forms.html, он также использует

var queryInput = form.Elements["q"] as IHtmlInputElement;

if (queryInput != null)
{
   queryInput.Value = "anglesharp";
}

Я предполагаю, что после того, как я установил queryInput в значение, я могу сделать

 var input = queryInput.Value to ensure the value is set.

Проблема, с которой я столкнулся, заключается в том, что я задаю три поля, а именно:

userID, pin-код, пароль, прежде чем я нажму на submit. Если я использую AngleSharp, он возвращает меня на ту же страницу, что означает, что аутентификация недействительна. Я знаю, что поля правильно заполнены значением, я просто не уверен, что он действительно передает эти значения.

Спасибо.

1 Ответ

0 голосов
/ 21 октября 2019

Я бы с радостью помог вам, но я боюсь, что у нас здесь может быть несколько проблем.

  1. Отправка формы с всеми полями ввода / подход пока верен,но также может быть немного сокращено (здесь у AngleSharp есть несколько помощников)
  2. Потенциально, JavaScript на вашем пути. В этом случае может помочь AngleSharp.Js. Имейте в виду, однако, что AngleSharp.Js является экспериментальным и может не работать для сложных сценариев / страниц.

Если вы столкнетесь с последним, у вас по существу будет два варианта: либо вы будете использовать моствместо этого в собственный (без заголовка) браузер (например, Chrome), или вы тратите некоторое время на то, что на самом деле делает JS на странице - в конце концов, вы заботитесь только о передаче (ях) HTTP. Если вы сводите его к передаче HTTP, вы можете использовать как - AngleSharp для обработки страниц / файлов cookie и т. Д., Так и ручную передачу HTTP для остальных.

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

...