在下面的例子中
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();然而,它抱怨说值不是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,密码在我点击提交之前。如果我使用AngleSharp,它会将我带回到同一个页面,这意味着身份验证无效。我知道字段中正确地填充了值,我只是不确定它是否确实传递了这些值。
谢谢。
发布于 2019-10-20 22:10:44
我很想帮助你,但我担心我们在这方面可能有几个问题。
提交带有所有输入字段的表单的here)
如果您遇到了后者,那么您基本上有两个选择:要么使用连接本地(无头)浏览器的桥接(例如,Chrome),要么在页面上的JS实际上正在做的事情上投入一些时间--毕竟,您只关心HTTP传输。如果将其归结为HTTP,则可以同时使用- AngleSharp处理页面/ cookies等,其余则使用手动HTTP传输。
如果您需要更多的信息,请告诉我--我可以编辑这个响应以更好地满足您的需要。
https://stackoverflow.com/questions/58473481
复制相似问题