从脚本/命令行执行浏览器页面/JavaScript

4
希望这不是一个愚蠢的问题。 我最近有了一个关于某件事情的想法,让我非常好奇。 我是Node.js的粉丝(我认为这和本题不相关),并且我想知道是否可能在内部运行浏览器(让其执行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,但我不知道它如何在浏览器上下文之外执行(甚至不确定是否可能)。
有什么想法吗?

2
你是指像 PhantomJS 这样的无头浏览器吗? - Teemu
是的,我进行了几次谷歌搜索,但没有找到这个...看起来正是我需要的东西...我会尝试一下并更新工单...非常感谢。 - Craig Taub
2个回答

5
你可以使用任何JS引擎来运行JS脚本,只要它们不依赖于DOM。
你可以从以下开始查看:
- 运行V8 JavaScript引擎独立 (Running V8 Javascript Engine Standalone
编辑:据我了解,您需要一个无头浏览器,以下是一些选择:
- HTMLUnit(我用它进行单元测试) - PhantomJS - Zombie.js

独立运行似乎是从命令行中的JS...我需要它能够执行浏览器所能做的一切,但没有浏览器...无论如何感谢。 - Craig Taub
做一个能够完成浏览器所有功能的东西听起来很像你最终会需要一个浏览器,所以你的意思是像浏览器一样但没有窗口/用户界面吗? - Christophe Roussy
是的,因此脚本可以多次打开/执行一个网站,并产生与用户相同的结果...这对于许多商业和个人事务非常有用。 - Craig Taub
啊,我明白了,我已经相应地更新了我的答案,我自己也用类似这样的东西进行单元测试。 - Christophe Roussy
Phantom.js 目前已经停止新开发(https://github.com/ariya/phantomjs/issues/15344)。 - ansebbian0

0

通过使用Java的Rhino或Windows脚本宿主在命令行上运行JavaScript。

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

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

嗯,我宁愿不使用Java,也不信任微软发布的任何东西,哈哈...抱歉,但我想我会选择@Teemu提到的PhantomJS。 - Craig Taub
好的,这只是另一种方式。很好,你得到了答案 :) - Sagar Kadam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接