2017-08-23 15 views
0

ボタンにリップル効果をテストしようとしていますが、テストを実行するには約1秒かかるので、リップル効果は既に消えています。分度器のクリックを加速する

コード:

let button = element(by.css('#primary-button')); 

button.click(); 
expect(element.all(by.css('#primary-button .ripple-effect')).count()).toBe(1); 

私はまた、マウスをアップ/ダウンしようとしましたが、同じ問題に直面してきました。

この例では、実行するのに約10秒かかります。)

1彼らは、要素のすべての検索の前に適用されます。このテストbrowser.manage().timeouts().implicitlyWait(0)のための暗黙の待機を無効にし、そうかもしれない:

let button = element(by.css('#primary-button')); 

for (let i = 0; i < 10; i++) { 
    button.click(); 
} 

expect(element.all(by.css('#primary-button .ripple-effect')).count()).toBe(10); 
+0

[AngularJS分度器テストのスピードを上げる方法はありますか?](https://stackoverflow.com/questions/25660758/is-there-a-way-to-speed-a-ja-j-protractor-テスト) –

+0

この遅延は分度器/角度同期によって引き起こされていませんか?クリックイベントは、私の経験では1秒未満という非常に迅速になります。 – Gunderson

答えて

1

私はカップルのトリックを示唆しています少し遅れを導入する。

2)このテストの角度同期を無効にする:browser.waitForAngularEnabled(false)。これはすべてのアクションの前に適用されますが、ここではクリック数が減ることがあります。

3)低レベルAPIを試してみてください -

let button = element(by.css('#primary-button')) 
browser.actions().click(button).perform() 

これは座標で動作しますので、

4速いかもしれません)browser.executeScript()でページ上のJavaScriptを実行に切り替え - あなたはをクリックしてtrueを返すかもしれませんリップルエフェクトが存在する場合はスクリプトから削除し、テストでtrueを返すようにアサートします。かなり速いはずですが、それは一般的なユーザーがクリックをするのではなく、合成クリックです。

+0

browser.waitForAngularEnabled(false);トリック、ありがとう! – bjorkblom