c# Webbrowser 如何 select 添加 dom 元素(形成隐藏按钮)并调用按钮上的单击

c# Webbrowser How to select an added dom element (form hidden button) and invoke a click on the button

简单地说,

我正在尝试将带有隐藏按钮和提交按钮的表单标签添加到在 c# 中的网络浏览器中加载的网页。添加后我想调用按钮上的点击事件。

我没有太多代码可以展示,因为我什至无法接近。我在 google 中找不到这样的例子。

我尝试使用创建元素,然后使用 InsertAdjacentElement,这在我检查 HtmlDoc 时似乎有效,但是当我尝试通过 ID 获取元素时,它总是 returns null。

System.Windows.Forms.HtmlDocument doc = harvester.Document;

string ftm = "<form Id = 'SD' method='POST' action='day.cfm'><input type='hidden' name='Day' value='" + selDay + "'><input id='SubmitDay' type='submit' value='View the Schedule'></form>";
var divElem = doc.CreateElement("div");
divElem.InnerText = ftm;
divElem = doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterBegin, divElem);

HtmlElement button = doc.GetElementById("SubmitDay");
// button = null, always.

感谢您的帮助。

图像显示插入表格后的DOM。

所以这是有效的代码... 仅供参考:selDay 和 wordDay 只是包含日期

的字符串变量
System.Windows.Forms.HtmlDocument doc = harvester.Document;
const string quote = "\"";
string ftm = "<form Id = 'SD' method='POST' action='schedule.cfm'><input type='hidden' name='Day' value=" + quote + selDay + quote+ ">" + wordDay + "<input id='SubmitDay' type='submit' value='View the Schedule'></form>";
var divElem = doc.CreateElement("div");
divElem.InnerHtml = ftm;
divElem = doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterBegin, divElem);

HtmlElement button = doc.GetElementById("SubmitDay");
button.InvokeMember("click");                

我会以不同的方式处理这个问题。我不会尝试使用 .NET HtmlElements 创建 HTML 文档,而是简单地构造一个包含我的网页内容的字符串变量。作为其中的一部分,我会创建一个简短的 javascript,它会在页面打开时触发(这样您就不需要提交按钮)。

最后,页面完成后,我会打开一个浏览器对象,它会完成它的事情。

或者,您可以使用 HttpPost (https://msdn.microsoft.com/en-us/library/microsoft.activities.messaging.httppost(v=azure.10).aspx) class 做同样的事情(无需创建网页)。

根据屏幕截图,您正试图通过设置 InnerText 属性 将 HTML 注入页面。来自 MSDN documentation 对于这个 属性:

If you attempt to assign HTML to an element with InnerText, the HTML code will display as literals in the document, just as if you were viewing HTML within a text file.

这意味着您的 forminput 元素被注入页面 escaped -- &lt;form&gt; 而不是 <form>,所以当您搜索 DOM 按钮时,它不存在。

请尝试使用 InnerHtml