2015-10-30 32 views
8

kullanıyorum sonra kullanmalıyım Bir Açısal uygulama çalıştırıyorum ve iletici bir click() üzerinde test ederken, ne zaman bir then() sözünü çözmem gerektiğini bilmiyorum. İletki, ne zaman bir tıklama()

Ben Açıölçer API üzerinde buldum:

tık komutu tamamlandığında çözülecektir Bir söz.

click().then()'u her click içinde kullanmalı mıyım?

cevap

7

Peki, her tıklatımda click() 'i() kullanmalı mıyım?

Kesinlikle değil.

Açıölçer/WebDriverJS çözülmesi gereken bir sürü sözü kuyruk temelde "Control Flow" adlandırılan bu mekanizmaya sahiptir çünkü gerekli değil

:

WebDriverJS bekleyen bir sürü sözü kuyruğunu tutar, için, kontrol akışını denilen yürütmeyi düzenli tutun.

ve Açıölçer doğal ve out-of-the-box Eğik bekler:

Artık bekler eklemem gerekiyor ve teste uyur. İletici , testinizde bir sonraki adımı otomatik olarak web sayfasının beklemedeki görevleri tamamladığından, test ve web sayfanızın senkronize edilmesini bekleyen için endişelenmenize gerek yoktur. oldukça düz ileri test koduna yol açan

:

Bazen
var elementToBePresent = element(by.css(".anotherelementclass")).isPresent(); 

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click(); 
expect(elementToBePresent.isPresent()).toBe(true); 

senkronizasyon/zamanlama sorunları ya yaşarsanız, test altında uygulama olmayan Eğik, sen may olsa then() ile açıkça click() çözerek bunu çözmek ve tıklama callback'inde içinde devam etmektedir:

expect(elementToBePresent.isPresent()).toBe(false); 
element(by.css("#mybutton")).click().then(function() { 
    expect(elementToBePresent.isPresent()).toBe(true); 
}); 

Ayrıca, bu durumlarda kurtarma için Explicit Waits da var, ancak burada alakalı değil.

+1

Kontrol Akışının geleceği söz konusudur. "Gelecekte, kontrol akışı kaldırılıyor" [WebDriver Kontrol Akışı] (https://github.com/angular/protractor/blob/master/docs/control-flow.md#disabling-the-control -flow) –

1

Evet, yapmalısınız. Belki şu anda gerekli değil, ama belki de sonraki sürümlerde. Yani, click bir söz verirse, onu kullanmalısınız.

http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click

+0

Kontrol Akışının geleceği söz konusudur. "Gelecekte, kontrol akışı kaldırılıyor" [WebDriver Kontrol Akışı] (https: // github.com/açısal/açı ölçer/leke/ana/docs/control-flow.md # devre dışı bırakılması-kontrol-akış) –

İlgili konular