【问题标题】:Execute browser page/javascript from a script/command-line从脚本/命令行执行浏览器页面/javascript
【发布时间】:2013-02-28 09:19:17
【问题描述】:

希望这不是一个愚蠢的问题。
我最近对一些我非常好奇的事情有了一个想法。
我是 Node.js 的粉丝(我认为这里并不相关)和 V8 引擎,但我想知道它是否可以运行浏览器(让它执行 JS)但在内部运行。

我的意思是创建一个程序(可能使用 V8 引擎),它可以打开一个页面(就像在浏览器中一样)并执行它的 javascript。

例如说我在 www.mysite.co.uk/home.php 上托管了以下文件

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction()
{
//javascript AJAX call to www.mysite.co.uk/ping.php
}
myFunction();
</script>
</head>

<body>
</body>
</html>

ping.php 看起来像:

<?php
//connect mysql, database ping and table ping
//it is a single column table with integer value starting on 0
//increment by 1 and update the table

假设我想通过在我的命令行/linux 框上使用某种脚本来执行 Javascript(基本上不使用浏览器)。

比如:

./mybrowser http://www.mysite.co.uk/home.php

甚至:

./mybrowser home.php

我觉得这应该是可能的,因为 V8(或不同的 JS 引擎)在技术上应该能够执行 Javascript,但我不知道它是如何在浏览器上下文之外执行此操作的(或者即使它可能)。

有什么想法吗?

【问题讨论】:

  • 你的意思是像PhantomJS这样的无头浏览器吗?
  • 是的,谷歌搜索了几次,但找不到这个...看起来只是想...会尝试更新票...非常感谢

标签: javascript html v8 headless-browser


【解决方案1】:

你可以使用任何 js 引擎来运行 js 脚本,只要它们不依赖于 DOM。

你可以先看看:

编辑:据我了解,您想要一个无头浏览器,这里有一些:

  • HTMLUnit(我用那个进行单元测试)
  • PhantomJS
  • Zombie.js

【讨论】:

  • 独立似乎是命令行中的 JS...我需要它能够完成浏览器可以做的所有事情,但没有浏览器...无论如何谢谢
  • 做浏览器能做的一切听起来很像你最终需要一个浏览器,所以你的意思是像一个浏览器但没有窗口/UI?
  • 是的,因此脚本可以多次打开/执行网站并产生与用户相同的结果......它对于很多商业和个人事情都非常有用
  • 啊,我明白了,我相应地更新了我的答案,我自己使用类似的东西进行单元测试
  • Phantom.js 目前已死 (github.com/ariya/phantomjs/issues/15344) 用于新的开发。
【解决方案2】:

使用 Rhino for Java 或 Windows Script Host 在命令行上运行 JavaScript。

http://www.mozilla.org/rhino/

http://msdn.microsoft.com/en-us/library/9bbdkx3k%28VS.85%29.aspx

【讨论】:

  • 嗯,宁可不使用 Java,也不相信微软推出的任何东西,哈哈……对不起,但我想我会选择 PhantomJS @Teemu 提到的
  • 好吧,这只是另一种方式。很好,你得到了答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
相关资源
最近更新 更多