【发布时间】:2020-02-21 22:00:38
【问题描述】:
我正在尝试使用 C# 控制浏览器。过去的工作方式是 OLE/互操作。现代浏览器似乎缺少这一点。我需要做的就是能够导航到 URL,然后不时更改 URL。使用 Process.Start("http://example.com") 的问题是这通常会产生几个子进程,我无法确定以后要杀死的确切进程。多次调用它只会创建新的孩子。我尝试使用 WebBrowser 和 WebView 控件。是的,这些给了我想要的控制,但是渲染引擎嵌入在应用程序中并且太旧了,没有网站允许这些控制工作了。
我发现了一个叫做 WebDriver 的东西。起初这似乎是一个很好的解决方案,除了它似乎非常依赖于浏览器的确切构建并且依赖于 Selenium。它可能非常适合自动化测试,如果浏览器自行更新,我不相信它会很好地用于长期浏览器控制。
接下来是 CefSharp。我过去使用过它,但它似乎也有一个嵌入式和过时的渲染引擎,许多网站抱怨它也过时了。即使 CefSharp 不时更新,我每次都需要重新构建我的应用程序。我在这里看到的问题是,渲染引擎嵌入到与我的应用程序一起分发的程序集中。是的,我见过大量其他嵌入式解决方案。其中许多已多年未更新。
理想情况下,我可以使用适用于任何浏览器版本的 WebDriver 之类的东西来控制浏览器。我可以启动外部浏览器,例如 FireFox 或 Chrome。任何浏览器都有API吗?这正是我想使用现代浏览器实现的伪代码:
ModernBrowser br = new ModernBrowser();
br.Navigate("about:blank"); // clear out last page
if(some_flag)
br.Navigate(Url); // navigate to new page.
If(done)
br.Close();
br = null;
这就是我所需要的。死的简单。 我正在尝试实现媒体播放系统。除了我需要现代浏览器来播放 Pandora、Spotify 或任何其他基于 Web 的系统之外,所有代码都可以正常工作。它们都需要最新的浏览器版本,否则它们根本不起作用。在我的应用程序中嵌入渲染引擎是一场噩梦。当然,我今天可以让它工作。我只是不确定明天。
【问题讨论】:
标签: c# webdriver webbrowser-control media-player chromium-embedded