在下面的示例中
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.
我的问题是我要设置三个字段,即
用户名,密码和密码,然后点击提交。如果我使用AngleSharp,它将带我回到同一页面,这意味着身份验证无效。我知道这些字段已正确填充了值,但我不确定它是否真的将这些值传递了过来。
谢谢。
我很想为您提供帮助,但我担心我们这里可能有几个问题。
如果遇到后者,则基本上有两种选择:要么使用桥接器连接到本机(无头)浏览器(例如Chrome),要么花费一些时间页面上的JS实际在做什么-毕竟,您只关心HTTP传输。如果将其归结为HTTP传输,则可以同时使用-AngleSharp(用于页面处理/ Cookie等)以及其余部分的手动HTTP传输。
让我知道您是否需要更多信息-我可以编辑此回复以更好地满足您的需求。