C#-等待网络浏览者完全完成网站/网页的导航和加载

C#-等待网络浏览者完全完成网站/网页的导航和加载,c#,browser-automation,C#,Browser Automation,我试图通过使用WebBrowser在C#中创建一个Windows窗体应用程序来实现web自动化。我现在有下面的代码,可以导航到Youtube并在Youtube的搜索栏中输入一个字符串 website.Navigate("www.youtube.com"); website.Document.GetElementById("search").InnerText = "Cavaliers vs Boston highlights"; 但是,我在行中得到一个NullReferenceExcepti

我试图通过使用WebBrowser在C#中创建一个Windows窗体应用程序来实现web自动化。我现在有下面的代码,可以导航到Youtube并在Youtube的搜索栏中输入一个字符串

website.Navigate("www.youtube.com");

website.Document.GetElementById("search").InnerText = "Cavaliers vs Boston highlights";
但是,我在行中得到一个NullReferenceException

website.Document.GetElementById(“search”).InnerText=“骑士vs波士顿亮点”

我尝试在不同的网站上搜索WebBrowser如何确定它是否已完全加载完您在Navigate方法中指定的网站,但到目前为止我还没有找到

我在网上找到了一些方法,这些方法检查WebBrowser的就绪状态,但尝试之后,它甚至没有加载我创建的表单,但仍然继续使用GetElementById方法


希望有人能帮我解决这个问题,从早上开始就一直在寻找解决方案。

尝试向WebBrowser添加事件侦听器。WebBrowser有一个在网页完全加载时发生的事件

差不多

public frmMain()
{
    website.DocumentCompleted += website_DocumentCompleted;
}


public void website_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{
    website.Document.GetElementById("search").InnerText = "Cavaliers vs Boston highlights"
}

你的表格在哪里。当然,它也可以添加到其他地方。

注意,如果您想要搜索结果,您可以使用Youtube的查询字符串直接进入搜索结果<代码>https://www.youtube.com/results?search_query=Cavaliers+vs+Boston+highlights这实际上非常有用,我会记住这一点。然而,我需要在加载Youtube后做一些事情(比如单击视频等),这就是为什么我需要知道WebBrowser如何确定它是否已完成加载。要操作DOM,需要等待DOM先完成加载。为此,请使用浏览器控件的
DocumentCompleted
事件。正如下面Quurzo所建议的那样。webbrowser控件(ieframe)的性能很差,但要优雅地使用它已经太旧了。我可以问一下我需要将哪些参数传递给此方法吗?它提到了object和WebBrowserDocumentCompletedEventArgs类型的两个参数,但我目前的代码中没有这两个参数。这是我必须创建的新东西吗;网站_DocumentCompleted();public void website_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e){website.Document.GetElementById(“search”).InnerText=“骑士vs波士顿亮点”}我试过这么做,但我仍然得到NullReferenceException。您可以通过双击表单设计器属性中的DocumentCompleted方法自动添加该方法。因此,在designer中的web浏览器上单击鼠标右键,选择“事件”,然后双击DocumentCompleted。另一种方法是手动添加,例如在表单构造函数中:
website.DocumentCompleted+=website\u DocumentCompleted编辑:更新答案。我试着按照你说的做,但它仍然给我一个NullReferenceException。