2016-12-26 14 views
1

私は分度器と角度のJSページで新しくなっています。分度器:キャンバス要素を使って作業する - ng-if/ng-show

end2endのテストでは、キャンバスに少なくとも1つの画像 (このキャンバスにいくつかの画像を埋め込むwebsocket.ioがあります)が届いているかどうかを検証する必要があります。

今のところ、キャンバスがその画像を受信した場合にのみ検証する必要があります。

私のhtmlページ:

<div class="terminal-screenshots" ng-class="{ online: isConnected() && vm.hasImage }"> 
 
     <canvas ng-show="isConnected() && vm.hasImage" style="width: 100%;" id="remoteTerminalCanvas"></canvas> 
 
     <span ng-if="!isConnected() || !vm.hasImage"> 
 
      {{ vm.display.message | translate }} 
 
     </span> 
 
</div> 
 
\t

これは私が期待している:

expect(element(by.id('remoteTerminalCanvas')).isDisplayed()).toBe(true); 

をしかし、最初の画像がキャンバスに表示する前に、それはtrueを返します。

+0

私は持っていませんキャンバスで多くの作業が行われましたが、イメージが埋め込まれた後にキャンバスの高さが変わるのでしょうか?もしそうなら、 'browser.wait()'を使ってキャンバスの高さがゼロより大きくなるまで待つことができます。 – finspin

+0

こんにちは、お返事ありがとうございます。D あなたはそれについての例がありますか? (キャンバスが0より大きい場合に有効です) –

+0

@ alecxeの答えはまさに私が心に留めていたものです。それがうまくいけば私たちに知らせてください。 – finspin

答えて

2

@finspinが指摘したように、あなたのcanvas要素は常に見えるかもしれませんが、同時に高さが0であるかもしれません。あなたはbrowser.wait()getSize()を経由して、ゼロ以上であることをheight値を待つことができます。

var canvas = element(by.id('remoteTerminalCanvas')); 
browser.wait(function() { 
    return canvas.getSize().then(function (size) { 
     return size.height > 0; 
    }); 
}, 5000); 

別のオプションは、hasImagebrowser.wait()evaluate()を経由して真になるのを待つことです。

var canvas = element(by.id('remoteTerminalCanvas')); 
browser.wait(function() { 
    return canvas.evaluate("vm.hasImage").then(function (hasImage) { 
     return hasImage; 
    }); 
}, 5000); 
+0

答えに感謝します! 最初のオプションは私にとってうまくいきました。しかし、キャンバスが少なくとも1つのイメージを受け取ったかどうかを確認するためにhasImageを使用するので、2番目のオプションが優れていると思います。 しかし、私は私の仕様を実行したとき、私はこの方法に を評価wirhこのエラーに直面している - 失敗しました:不明なエラー:あなたは 感謝 –

+0

@GuilhermeLeindeckerをしたい場合、私は完全なスタックを提供することができ、未定義 の「$ evalのを」プロパティを読み取ることができません。うーん、前にこの種のエラーを見たことがない。あなたは最新の分度器にいますか? 'vm.hasImage'を' vm&vm.hasImage'に変更するとどうなりますか? – alecxe

+0

分度器--version バージョン4.0.14 Google Chromeバージョン:54 コード 返信canvas.evaluate( 'vm && vm。 hasImage ') 同じエラー –

関連する問題