在PhantomJS / CasperJS中播放声音的方法有哪些?

时间:2016-12-08 15:27:59

标签: phantomjs casperjs

我一直在网上搜索超过3个小时,现在正在寻找播放音频文件的相关方法,但不幸的是我找不到任何有用的东西。我有一个自动执行某些任务的CasperJS,我希望它在完成所有任务后播放音频文件(例如beep.wav)。我想知道是否有可能。

casper.run(function(casper) {
    fs.write( saveDir, JSON.stringify(content, null, '  '), 'w');
    // play an audio file before exiting....
    casper.exit();
});

1 个答案:

答案 0 :(得分:4)

您需要使用Child Process Module来运行脚本,才能播放音乐。

我创建了pl.sh脚本来播放音乐:

#!/bin/bash
mplayer "/music/downloads2/Technoboy - Into Deep.oga"
exit 0

然后我创建了CasperJS脚本:

var casper = require('casper').create();
casper
.start('http://domu-test-2/node/12', function(){
    var childProcess;
    try {
        childProcess = require("child_process")
    } catch(e){
        console.log(e, "(error)")
    }
    if (childProcess){
        childProcess.execFile("/bin/bash", ["./pl.sh"], null, function(err, stdout, stderr){
            console.log("execFileSTDOUT: "+stdout);
            console.log("execFileSTDERR:",stderr);
        });
        console.log("Shell commands executed")
    } else {
        console.log("Unable to require child process (error)")
    } 
    this.wait(10000)// need to wait to play the sound
})
.run();

然后是PhantomJS脚本:

var page = require('webpage').create();
page.open('http://domu-test-2/node/12', function() {
    var childProcess;
    try {
        childProcess = require("child_process")
    } catch(e){ 
        console.log(e, "(error)")
    }
    if (childProcess){
        childProcess.execFile("/bin/bash", ["./pl.sh"], null, function(err, stdout, stderr){
            console.log("execFileSTDOUT: "+stdout);
            console.log("execFileSTDERR:",stderr);
        });
        console.log("Shell commands executed")
    } else {
        console.log("Unable to require child process (error)")
    } 

    setTimeout(phantom.exit,10000)// need to wait to play the sound
});