1

そのため、DalekJS でテストを実行しているときにブラウザーから値を取得する方法を見つけようとしています。私が知る限り、それは現在不可能です。Dalek コードのハッキングについても調べてみましたが、インストールと実行以外に CommonJS と NodeJS についてほとんど知らないので、実際に最初に聞いてみようと思いました。

私がやろうとしていることは次のようなものです:

// Non-working example
module.exports = {
  'My Test': function(test) {
    var foo;

    test
    .open('http://localhost/mysite')
    .execute(function(){
      foo = document.getElementById('bar');
    })
    .type('#myField', foo)
    .done();
  }
}

これで、このコードが機能しない理由がわかりました。これは、execute()関数がブラウザー ウィンドウのコンテキストで実行されるためです (コンソールに入力したかのように)。

私が求めている質問は、テストで使用する値を取得する方法はありますか?


コンテキスト情報:私のユース ケースは、フォームが送信され、コードがユーザーに提供される E2E シナリオをテストしていることです。このコードは、別のページで入力する必要があります。テスト目的でモック値を設定する可能性はありますが、それは実際のシナリオではありません。

前もって感謝します!

4

2 に答える 2

0

関数の文書化された例に基づいて.log.message、次のようなことができます。

module.exports = {
  'My Test': function(test) {
    test
      .open('http://localhost/mysite')
      .execute(function(){
        var foo = document.getElementById('bar').value;
        this.data('foo', foo);
      })
      .type('#myField', test.data('foo'))
      .done();
  }
}
于 2014-07-21T11:01:38.490 に答える
0

はい、

これはまだ実装していないユースケースですが、適切な解決策が見つからない限り、次の回避策を使用できます。

module.exports = {
  'My Test': function(test) {
    test
      .open('http://localhost/mysite')
      .execute(function(){
        var foo = document.getElementById('bar').innerText;
        document.getElementById('myField').setAttribute('value', foo);
      })
      .done();
  }
};

このメソッドにはいくつかの問題があり、この方法でフィールドに値を追加するとkeyup、などのイベントハンドラは起動されません。keydownコードがそれらに依存していない場合は、問題ありません。それ以外の場合は、新しいバージョンがリリースされるまで数週間待たなければなりません。これにより、このようなシナリオにより優れたソリューションが提供されます。

それが役立つことを願っています。

乾杯セバスチャン

于 2014-03-04T09:16:23.680 に答える