使用 JavaScript 的 Lynx

问题描述 投票:0回答:4

所以我用 PHP 编写了一个脚本,需要 JavaScript 来运行它。我很难找到如何使用 PHP 运行 JavaScript 的解决方案,同时使用一些 Linux 工具使其自动化(因为在我的浏览器中运行它不是一个选择,我需要它成为一个 crontab )。使用

php
命令也不是一个选择,因为它不运行 JavaScript。所以我找到了解决办法;是山猫。

所以这是我的问题:出于某种原因,JavaScript 在我的浏览器中运行得很好,但在 Lynx 中却不行。使用 Lynx,页面只需加载,无需任何 JavaScript 参与。有没有一种方法可以在 Lynx 中调试 JavaScript,类似于 Google Chrome,您可以在控制台中查看正在发生的情况。是什么导致脚本无法在 Lynx 中运行?

编辑:

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

linux browser-automation lynx
4个回答
24
投票

Lynx 不支持 Javascript。

更新1

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


7
投票

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


1
投票
执行Javascript

,我会建议您使用nodejsotto之类的东西。作为整个无头浏览器,它们的性能占用要小得多。 如果您需要的不仅仅是简单的 Javascript,例如DOM 左右,你应该按照其他人的建议尝试使用

无头浏览器

ChromePhantomJS)。 如果您不仅需要浏览器,而且想使用该浏览器进行

自动化测试

Selenium仍然是最佳选择。 这实际上取决于您的用例,您需要多少。

更新:

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


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

所以大概的流程如下:

忘记 crontab

设置 jenkins ubuntu 服务器(安装了 x)

    安装 jenkins xvncserver(?) 插件——我想这就是它的名字。不管怎样,这会自动为你启动一个 XHOST。
  • 编写前往相关位置的 selenium webdriver 脚本(最简单的 * 是使用 Selenium IDE)
  • 让 selenium IDE 将 webdriver 脚本输出为任意格式,然后让 jenkins 运行它。我个人使用Java格式,然后使用ant来构建它们。
  • 正如您所想象的,这是一个相当不错的设置,但从技术上讲它可以满足您的要求。抱歉,这并不像通过管道将 wget 传输到 lynx 那么简单。
  • 另一种方法是将您的网页重写为 DO STUFF,而不假设有浏览器,例如,采用 GET 参数将其置于“自动模式”,然后它会假设它是从 cron 运行的,并通过更短的时间来实现它的快乐电路。

© www.soinside.com 2019 - 2024. All rights reserved.