Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与WebBrowser相关的自定义代码项目,can';在C中找不到特定id的元素#_C#_Html_Console_Getelementbyid - Fatal编程技术网

C# 与WebBrowser相关的自定义代码项目,can';在C中找不到特定id的元素#

C# 与WebBrowser相关的自定义代码项目,can';在C中找不到特定id的元素#,c#,html,console,getelementbyid,C#,Html,Console,Getelementbyid,我一直在一个控制台项目上开发一个基于C#的web浏览器相关程序。现在,这里有一段代码正在Windows窗体应用程序中运行,但在控制台应用程序中,它向我显示了“对象引用未设置为对象实例”。到目前为止,通过调试,通过elementId将所有内容从HTMLElementCollection转换为var,它显示为False,这意味着HTML中没有这样的id。现在,这段代码没有错,因为同样的代码在Windows窗体应用程序中工作得很好。我希望你能理解。在此方面的一点帮助将不胜感激!谢谢 下面提供了一段代码

我一直在一个控制台项目上开发一个基于C#的web浏览器相关程序。现在,这里有一段代码正在Windows窗体应用程序中运行,但在控制台应用程序中,它向我显示了“对象引用未设置为对象实例”。到目前为止,通过调试,通过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!");
}

是否确定浏览器对象已加载正确的内容?首先检查browser.Document元素的innerHtml。(调试时可能需要?

是否确定浏览器对象已加载正确的内容?首先检查browser.Document元素的innerHtml。(虽然可能需要调试?

您可以尝试以下方法:

只需在代码段的第一个IF语句之前放置一个等待序列;像这样:

while (browser.ReadyState != WebBrowserReadyState.Complete)
{  
  Application.DoEvents();
}

if (browser.ReadyState == WebBrowserReadyState.Complete)
{
...
更新: 您正在使用DocumentCompleted事件吗?如果WebBrowserDocumentCompletedEventArgs的url属性与您请求的url相同,请检查它们。因为documentcompleted会激发web请求中的所有文件(如js和css文件)。

您可以尝试以下方法:

只需在代码段的第一个IF语句之前放置一个等待序列;像这样:

while (browser.ReadyState != WebBrowserReadyState.Complete)
{  
  Application.DoEvents();
}

if (browser.ReadyState == WebBrowserReadyState.Complete)
{
...
更新:

您正在使用DocumentCompleted事件吗?如果WebBrowserDocumentCompletedEventArgs的url属性与您请求的url相同,请检查它们。因为documentcompleted会触发web请求中的所有文件(如js和css文件)。

是什么变量导致“对象引用未设置”显示在这里
browser.Document.GetElementById(“项目标题”).SetAttribute(“值”,项目标题)顺便说一句,projectTitle不是空的,它有一个值,我选中了。projectTitle可能不是空的,但是GetElementById(“项目标题”)似乎是空的。你也检查过了吗?我的问题是为什么它变为空?就在这一行之前,我通过innerText进行了一次调用,但效果很好,没有空值。那么为什么这里为空?是什么变量导致“对象引用未设置”显示在这里
browser.Document.GetElementById(“项目名称”).SetAttribute(“值”,项目名称)顺便说一句,projectTitle不是空的,它有一个值,我选中了。projectTitle可能不是空的,但是GetElementById(“项目标题”)似乎是空的。你也检查过了吗?我的问题是为什么它变为空?就在这一行之前,我通过innerText进行了一次调用,但效果很好,没有空值。那为什么在这里是空的?好的。我以前执行过一些
.Navigate()
方法<代码>浏览器.Document.All
拥有一切…同样的代码在windows窗体应用程序中工作得非常完美。但是除了这个以外的所有东西在控制台里都不起作用,好的。我以前执行过一些
.Navigate()
方法<代码>浏览器.Document.All
拥有一切…同样的代码在windows窗体应用程序中工作得非常完美。但是除了这个以外的所有东西在控制台中都不工作。我们能看到innerHtml值吗?哇,它没有加载整个部分。只有一半。。。最多一个
tag@SaffanAlvy所以当你看到问题变成“为什么它加载了一半…”嘿,我明白了。只需重新加载页面即可获得所有元素。现在编程没有给出任何错误。。。它甚至还提交了博客帖子。但是在我的博客里,没有新的帖子。我想知道为什么?我们能看到innerHtml值吗?哇,它没有加载整个部分。只有一半。。。最多一个
tag@SaffanAlvy所以当你看到问题变成“为什么它加载了一半…”嘿,我明白了。只需重新加载页面即可获得所有元素。现在编程没有给出任何错误。。。它甚至还提交了博客帖子。但是在我的博客里,没有新的帖子。我想知道这是为什么?