29

所以我用 PHP 写了一个脚本,需要 javascript 来运行它。我很难找到有关如何使用一些 linux 工具同时使用 php 运行 javascript 以使其自动运行的解决方案(因为在我的浏览器中运行它不是一种选择,我需要它是一个 crontab )。使用“php”命令也不是一个选择,因为它不运行 javascript。所以我找到了一个解决方案,它是lynx。

所以这是我的问题:由于某种原因,javascript 在我的浏览器中运行得很好,但在 lynx 中却没有。使用 lynx 只需加载页面,无需任何 javascript 参与。有没有办法在 lynx 中调试 javascript,就像 google chrome 一样,您可以从控制台查看正在发生的事情,这样我就可以找出导致脚本无法在 lynx 中运行的原因?

编辑:

所以显然lynx不支持javascript。在那种情况下,我的问题是,什么是?我需要像浏览器一样运行此脚本,但要从 linux 命令提示符中运行。如果操作系统在这种情况下很重要,我正在运行最新的 Ubuntu。

4

5 回答 5

18

Lynx 不支持 Javascript。

更新 1

根据您对您正在尝试做的事情的总结(登录到需要 JavaScript 进行密码加密的站点),我强烈建议您考虑使用Selenium或其他浏览器自动化包。即使您在没有这样的层的情况下使密码提交正常工作,如果您使用像 Lynx 这样的极简浏览器,该站点也可能会出现其他问题。

于 2012-02-19T21:45:18.570 回答
9

Lynx 不支持 JavaScript,但基于 SpiderMonkey的替代文本浏览器ELinks支持。不过,这有点实验性。有关如何编译它,请参阅手册。

另外,我真的很困惑你在这里想要完成什么......

于 2012-02-19T21:50:19.077 回答
7

你需要的是一个无头浏览器。例如PhantomJS就是其中之一。我认为这是最受欢迎的一种。

于 2015-09-22T12:57:27.220 回答
1

如果您只想从命令行执行 Javascript ,我会建议您使用 nodejsotto之类的东西。作为一个完整的无头浏览器,它的性能占用要小得多。

如果您需要的不仅仅是普通的 Javascript,例如 DOM 左右,您应该尝试其他人建议的无头浏览器ChromePhantomJS)。

如果您不仅需要浏览器,而且想用该浏览器进行自动化测试,那么Selenium仍然是您的最佳选择。

这实际上取决于您的用例需要多少。

更新:几个月以来,现在可以将Chrome 用作无头浏览器(Firefox 也在路上)。

于 2017-02-07T11:42:26.247 回答
0

Selenium 是要走的路,但正如您所注意到的,它需要一个显示。然后需要启动它,yada yada yada,现在你有一个相当复杂的设置!

值得庆幸的是,还有另一种方法可以自动化所有这些,它是通过自动化框架。我推荐詹金斯。它已经有一个插件来启动一个 x 服务器。

所以大概的流水线如下:

  • 忘记 crontab
  • 设置一个 jenkins ubuntu 服务器(安装了 x)
  • 安装 jenkins xvncserver(?) 插件——我想这就是它的名字。无论如何,这将自动为您启动一个 XHOST。
  • 编写前往相关位置的 selenium webdriver 脚本(最简单的 * 是使用 Selenium IDE)
  • 让 selenium IDE 将 webdriver 脚本输出为任何格式,然后让 jenkins 运行它。我个人使用Java格式,然后使用ant来构建它们。

您可以想象,这是一个相当不错的设置,但从技术上讲,它会满足您的要求。对不起,它不像管道 wget 到 lynx 那样简单。

另一种方法是在不假设浏览器的情况下将您的网页重写为 DO STUFF,例如,获取一个将其置于“自动模式”的 GET 参数,然后它将假设它是从 cron 运行并通过更短的电路来实现它的幸福.

于 2015-06-04T00:28:04.273 回答