c# - C# - 等待 WebBrowser 完全完成导航和加载网站/网页
问题描述
我正在尝试通过使用 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 有一个WebBrowser.DocumentCompleted事件,该事件在网页完全加载时发生。
就像是
public frmMain()
{
website.DocumentCompleted += website_DocumentCompleted;
}
public void website_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
website.Document.GetElementById("search").InnerText = "Cavaliers vs Boston highlights"
}
其中 frmMain 是您的表单。它当然也可以添加到其他地方。
推荐阅读
- javascript - react-native-multiple-select how to populate with data stored
- excel - 在 Excel 工作簿中查找完全匹配项,然后将该行中的数据复制到另一个工作簿
- r - 使用来自两个不同大小数据集(和逻辑关系)的变量来创建新变量
- xamarin.forms - iOS ImageCell 中的行分隔符并不总是显示
- html - 将表格添加到 div
- php - Soap 响应不是 XML 而是字符串
- rabbitmq - Spring AMQP RabbitMQ RPC - 与一些不期望响应的消息一起排队
- javascript - 应用程序首次加载时 React Native 中的全局状态
- visual-studio-code - vscode 在最新的 Flutter 版本上无法 HotReload
- javascript - 在 JavaScript 中下载存储数据