我得到了一个例外:
水豚::鬼驱:: 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(){} } }"
但是访问方法会引发错误。
答案 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”处理程序。