2016-08-23 15 views
0

私はAngularJSで開発されたアプリケーションのUIでいくつかのテストを行うボットをプログラミングしています。 これを行うには、私はPhantomJSを使用しますが、私はブロックされています...実際にはフォームを検証するために.csvファイルをアップロードする必要がありますが、今はできません。私はどのようにこの問題を解決するのか分かりません。JS:自動的にファイルをフォームにアップロード

私はこれを見つけました:page.uploadFile('input[name=image]', '/path/to/some/photo.jpg'); しかし、他の問題...私はテストのためにモカを使用し、私のテストは、アプリケーションのコードに注入されます。だから、どのようにページオブジェクトを取得するのか分からない。

私のアーキテクチャの簡単な計画:

launcher.js

Initialize PhantomJS 
page.open() { 
    page.evaluate() { 
     page.injectJs(all my tests); 
    } 
} 

test_1.js
describe... 
it('should works', ...) { 
    Fill form 
} 

ありがとうございました!

答えて

0

javascript(12)からファイル入力を入力することはできません。

正確に何をテストしていますか?サーバー部分をテストする場合はXMLHttpRequest and FormData to upload a Blob object as a fileを使用できます。エンドツーエンドのテストを作成する場合は、webdriverioを試してみてください。 UIテストを行う場合は、テストのために別々のjavascriptファイルをコンパイルして、ネットワークの一部を模擬する必要があります。

0

「私のテストがアプリのコードに注入された」のかどうかは分かりません。テストはアプリケーションと同じプロジェクト内にあると言いますか?もしそうなら、非常に一般的な設定です。サーバーを実行してから実行中のサーバーに対してテストを実行する必要があります

var webpage = require('webpage') 
    describe("test suite", function() { 
     it("test upload", function(done) { 
      console.log('Loading a web page'); 
      var page = webpage.create(); 
      var url = 'http://your.server'; 
      page.open(url, function (status) { 
       //Page is loaded! 
       page.uploadFile('input[name=image]', '/path/to/some/photo.jpg'); 
       phantom.exit(done); 
      }); 
     }); 
    }); 
関連する問題