我一直在控制台项目上开发基于 C# 的 Web 浏览器相关程序。现在,这是一段在Windows 窗体应用程序中运行的代码,但在控制台应用程序中它向我显示'Object reference not set to an instance of an object'。到目前为止,通过调试,通过 elementId 将HTMLElementCollection中的所有内容转换为var,它显示为 False,这意味着 HTML 中没有这样的 id。现在,这段代码没有错,因为相同的代码在 Windows 窗体应用程序中运行良好。我希望你明白。对此有一点帮助将不胜感激!谢谢。
下面提供了一段代码:
if (browser.ReadyState == WebBrowserReadyState.Complete)
{
//Putting the values inside the boxes
browser.Document.GetElementById("project_title").SetAttribute("value", projectTitle);
browser.Document.GetElementById("article_title").SetAttribute("value", title);
browser.Document.GetElementById("article_content").SetAttribute("value", content);
browser.Document.GetElementById("article_tags").SetAttribute("value", tags);
browser.Document.GetElementById("article_url_1").SetAttribute("value", url);
browser.Document.GetElementById("article_keyword_1").SetAttribute("value", keywords);
browser.Document.GetElementById("article_url_2").SetAttribute("value", url2);
browser.Document.GetElementById("article_keyword_2").SetAttribute("value", keywords2);
browser.Document.GetElementById("article_url_3").SetAttribute("value", url3);
browser.Document.GetElementById("article_keyword_3").SetAttribute("value", keywords3);
HtmlElementCollection lastElementCollection = browser.Document.All;
foreach (HtmlElement webpageelement in lastElementCollection)
{
if (webpageelement.GetAttribute("value").Contains("Submit"))
webpageelement.InvokeMember("click");
}
Console.WriteLine("Please wait for 5 second(s).");
Thread.Sleep(5000);
Console.WriteLine("Post has been submitted successfully!");
}