Capybara poltergeist phantomjs音频上的JavascriptError

时间:2012-11-17 19:39:58

标签: capybara phantomjs poltergeist

我得到了一个例外:

  

水豚::鬼驱:: JavascriptError

调试输出:

  

“args”=> [[{“message”=>“ReferenceError:找不到变量:音频”

Here's what I found when researching the error:

  

这个问题是由于sencha 2.0使用phantomjs来解决   依赖。 Phantomjs不支持HTML5 Audio API。

问题是:当使用capybara / poltergeist时,如何忽略javascript音频类型的javascript错误?

我试过

visit "/"
page.execute_script "var Audio= function(){ return { load: function(){}, play: function(){} } }"

但是访问方法会引发错误。

2 个答案:

答案 0 :(得分:3)

Phantomjs不支持git文档here中指定的Audio

我遇到了同样的问题,并尝试按照您所描述的方式使用代码,但不使用var,因此将全局定义。

page.execute_script "Audio= function(){ return { load: function(){}, play: function(){} } }"

我使用检查器page.driver.debug对其进行了测试,并且正确地在phantomjs中定义Audio,问题在于,它在需要之前没有被执行。

因此,我的方法是在实际使用实际代码中的函数之前添加一个检查来验证Audio是否已定义。这是我所拥有的功能的一个例子:

getAudioObject = function(file_path){
  if (typeof Audio !== "undefined" && Audio !== null) {
    audioObj = new Audio(file_path);
    audioObj.loop = true;
    return audioObj;
  }
}

这是我的解决方案,它对我有用。我希望这对你也有帮助。

答案 1 :(得分:0)

要在初始化任何资源脚本之前正确定义全局变量,请使用“onInitialized”处理程序。