6

問題:

クライアント側の JavaScript をテストするためにzombie.js を使用していますが、問題が発生しています。Zombie.js は同期<script>タグ実行を提供せず、実際には外部 JS ファイルをまったく実行しないようです。基本的なテストはこれを確認します:

<script type="text/javascript" src="test1.js"></script>
<script type="text/javascript" src="test2.js"></script>
<script type="text/javascript" src="test3.js"></script>

<script type="text/javascript">
   console.log("Inline javascript.");
</script>

各 test#.js には次の 1 行が含まれます。console.log("TEST#.JS");

これを通常のブラウザーでレンダリングすると、コンソールに次のように表示されます。

TEST1.JS
TEST2.JS
TEST3.JS
Inline javascript.

しかし、zombie.js で実行すると、1 行しか表示されません。Inline javascript.

この問題を回避するために私が試みたのは次のとおりです。

  1. document.createElementスクリプトタグをドキュメントに動的に追加するために使用
  2. を使用document.writeしてスクリプト ブロックを html に追加する
  3. setTimeoutonconsole.log("Inline javascript")と 1 および 2 を組み合わせて使用​​して、テスト スクリプトの読み込みに時間を与えます。

すべての外部 JS ファイルの JS コードを巨大な<script>ブロックに配置する以外に、この問題を解決する方法はありますか?

4

1 に答える 1

3

ブラウザ オブジェクトの「runScripts」オプションが true に設定されていますか? そうでない場合は、次の構文を使用できます。

browser.visit('... your page url ...', { runScripts: true }, function (e, b) { 
    console.log('executing callback'); 
});
于 2013-09-18T10:54:32.003 に答える