【问题标题】:Java Runtime exec: Get information from FirefoxJava Runtime exec:从 Firefox 获取信息
【发布时间】:2012-08-12 17:18:54
【问题描述】:

使用 Java,我可以使用我使用此代码设置的 URL 很好地打开 Firefox:

Runtime.getRuntime().exec("C:\\Program Files\\Mozilla Firefox\\firefox.exe" + " " + "http://www.website.com");

但如果可能的话,我怎样才能返回以下数据?

  1. 如果 Firefox 加载成功? (作为布尔值)
  2. 如果 URL 加载成功? (作为 bool,或者如果使用超过 1 个 URL 作为 bool 数组)
  3. 加载时间(作为值/字符串,或者如果使用超过 1 个 URL 作为值/字符串数组。
  4. Firefox Web 控制台的内容(作为字符串,或者如果使用多个 URL 作为字符串数组)

有没有办法做到这一点并从 Firefox 或 .exec 启动的其他程序中取回此类数据?

【问题讨论】:

  • 不要那样做。您不能假设您的用户拥有 Firefox,或者他们甚至拥有C: 驱动器。
  • 我想要这个供我自己使用,所以会找到 Firefox。
  • @zeddex - 指导方针:如果不需要,不要硬编码;)
  • Desktop 类将启动默认浏览器并提供第 1 点的答案。但仍然不是可以与/观察 ' 交互的自动化工具所需的 0.1%其他程序'.

标签: java firefox exec runtime.exec


【解决方案1】:

您根本不会从 Java Runtime.exec() 中获得太多好处,恕我直言...

这里有一个替代方案,可以让你做一些/大部分你想做的事情......来自 Perl(不是 Java):

这只是一个例子。还有很多很多其他的选择。如果你想走 Java 路线,请搜索“screen scrapers”或“automation”。例如:

'希望有帮助

【讨论】:

  • 如果我使用 Perl 会很好,但它必须是 Java,因为那是我使用的编程语言。我正在制作一个自动化工具,但想自己学习而不是使用库,这就是我问的原因。不过感谢您的回复。
  • @zeddex - 过渡尤达:“做或不做……没有 Runtime.exec()”;)
  • @zeddex - 指导方针:如果没有必要,不要重新发明轮子。您不仅可以“完成工作”,而且还有机会从成功的设计中学习——或许还能发明出更好的东西!
  • 从 exec 取回似乎相当标准的响应信息并不是完全重新发明轮子。可能有一些方法可以使用while循环和程序检查来测试程序是否正在运行,但我认为java中会有一个内置的解决方案,因为它可以启动程序。
  • 如果我要使用 selenium 或其他库,它如何获得我在原始问题中请求的所有数据。如果可能的话,您是否知道或有指向可以执行此操作的 java 代码的链接?谢谢
【解决方案2】:

我建议看看 Selenium... 基本上,您(当然)需要一个用于 firefox 进程的监视器,并且由于 Firefox 不提供 COM,因此您需要“内部”firefox,即插件。这就是硒的作用。然后,这样的插件可以向您发送任何内部信息,例如通过简单的 tcp 连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多