AngleSharp提交表格

问题描述 投票:1回答:1

在下面的示例中

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,它将带我回到同一页面,这意味着身份验证无效。我知道这些字段已正确填充了值,但我不确定它是否真的将这些值传递了过来。

谢谢。

submit anglesharp
1个回答
0
投票

我很想为您提供帮助,但我担心我们这里可能有几个问题。

  1. 使用all输入字段提交表单/到目前为止的方法是正确的,但也可以缩短一点(AngleSharp这里有一些帮助者)
  2. 可能,JavaScript妨碍了您。如果是这种情况,AngleSharp.Js可能会有所帮助。但是请记住,AngleSharp.Js是实验性的,可能不适用于复杂的脚本/页面。

如果遇到后者,则基本上有两种选择:要么使用桥接器连接到本机(无头)浏览器(例如Chrome),要么花费一些时间页面上的JS实际在做什么-毕竟,您只关心HTTP传输。如果将其归结为HTTP传输,则可以同时使用-AngleSharp(用于页面处理/ Cookie等)以及其余部分的手动HTTP传输。

让我知道您是否需要更多信息-我可以编辑此回复以更好地满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.