【发布时间】:2015-09-13 21:59:44
【问题描述】:
我想自动化一个网络流程,它必须使用谷歌浏览器来完成,因为目标网站只适用于特定的 Chrome 扩展程序。
到目前为止,我一直在使用直接在 Chrome 浏览器中运行的简单 javascript 代码。但现在我需要完成更复杂的操作,例如关闭当前窗口、打开另一个 URL、执行不同的脚本……而我能做到的唯一方法是使用外部桌面应用程序。
我的第一次尝试是使用 Visual Studio 并包含一个“基于 Chrome”(WebKit) 的浏览器控件,例如 CefSharp (ChromiumEmbeddedFramework),但它们都不支持安装扩展程序,因此它们对我的目的毫无用处。
我的第二个想法是使用一些 Chrome API 在应用程序之间进行交互,以便我可以读取 html 内容、打开新选项卡或窗口并在合适的时间执行我自己的 javascript 代码。但据我了解,所有提供的 API 都是在 Chrome 扩展内部使用还是由 Chrome OS 使用。这是正确的吗?没有“简单”的方法可以从其他应用程序访问 Chrome?
我的另一个想法是使用 Chrome 的远程调试协议功能,在导航器中打开一个客户端会话并从我的应用程序中对其进行命令。但我不确定它是如何工作的,我认为我不能从我的应用程序中启动新的选项卡或窗口,所以它也不是很有帮助。此外,对于一个更简单的问题来说,这似乎是一个如此复杂的解决方案。
我想出的最后一个想法是直接使用 Chrome 的扩展程序来完成所有工作。问题是我不知道扩展是如何工作的,即使我关闭了我的目标网页,我是否也可以执行它。例如:假设我想关闭浏览器的当前选项卡并在 5 分钟内再次打开它,是否可以通过扩展来实现? 我必须从零开始学习扩展,因为我不知道。
总结一下我的疑惑:
- 是否有适用于 Windows 桌面应用程序的 Chrome API? (或任何其他方式在 Chrome 和应用程序之间进行交互?)。
- 您认为远程调试是否适合我的自动化目的。
- 扩展程序能否完成我期望它完成的所有工作?
- 您还有其他建议吗?
我希望我已经清楚地解释了自己。我对网络编程不太了解,所以谢谢你的帮助!
最好的问候。
P.S:在另一个论坛上发布这个问题后,我发现了 Chrome 应用程序,它与 Chrome 扩展程序有点不同(是的,我不是 chrome 专家)。我认为 Chrome 应用程序适合我的目的。尽管如此,我必须从零开始学习如何编写它们,而且我不太习惯 Js 语言,所以我更愿意使用用 C# 编写的外部程序进行管理。 关于如何实现这一目标的任何想法?否则我将开始研究如何开发 Chrome 应用程序。
【问题讨论】:
标签: javascript api google-chrome google-chrome-extension