【发布时间】:2018-11-07 16:09:20
【问题描述】:
我正在尝试通过使用 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 方法。
希望有人能帮我解决这个问题,从早上起就一直在努力寻找解决方案。
【问题讨论】:
-
请注意,如果您需要的话,您可以使用 Youtube 的查询字符串直接进入搜索结果。
https://www.youtube.com/results?search_query=Cavaliers+vs+Boston+highlights -
这实际上很有帮助,我会记住这一点。但是,我需要能够在加载 Youtube 后做一些事情(比如点击视频等),这就是为什么我需要知道 WebBrowser 如何确定它是否已经完成加载。
-
要操作 DOM,您需要先等待 DOM 完成加载。为此,请使用浏览器控件的
DocumentCompleted事件。正如下面的 Quirzo 所建议的那样。 webbrowser 控件 (ieframe) 的性能很差,不过使用起来也太旧了。
标签: c# browser-automation