3

例外が発生します:

カピバラ::ポルターガイスト::JavascriptError

そしてデバッグ出力:

"args" => [[{"message" => "ReferenceError:変数が見つかりません:オーディオ"

エラーを調査したときに見つけたものは次のとおりです。

この問題は、依存関係を解決するためにphantomjsを使用するsencha2.0が原因です。PhantomjsはHTML5オーディオAPIをサポートしていません。

質問は次のとおりです。capybara/poltergeistを使用しているときにjavascriptオーディオタイプのjavascriptエラーを無視するにはどうすればよいですか?

私は試した

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

ただし、visitメソッドでエラーがスローされます。

4

2 に答える 2

3

Phantomjsは、ここAudioのgitドキュメントで指定されているようにサポートしていません

私も同じ問題を抱えていて、あなたが説明したようなコードを使用してあなたのアプローチに従おうとしましたが、使用しvarないとグローバルに定義されます。

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

インスペクターでテストしたところ、phantomjsで正しくpage.driver.debug定義されていましたが、問題は、必要になる前に実行されていなかったことです。Audio

Audioしたがって、私のアプローチは、実際のコードの関数で実際に使用する前に、定義されていることを確認するためのチェックを追加することでした。これは私が持っている関数の例です:

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

それが私の解決策であり、それは私のために働きました。これがあなたにも役立つことを願っています。

于 2013-05-08T22:40:49.630 に答える
0

リソーススクリプトが初期化される前にグローバル変数を適切に定義するには、「onInitialized」ハンドラーを使用します。

于 2014-11-24T19:11:42.650 に答える