ben o insanların kullanmayı önermek pek çok kez gördük:iletki içinde browser.ignoreSynchronization nedir?
browser.ignoreSynchronization=true; // or false
Ama ona ihtiyacımız neden anlamıyorum?
ben o insanların kullanmayı önermek pek çok kez gördük:iletki içinde browser.ignoreSynchronization nedir?
browser.ignoreSynchronization=true; // or false
Ama ona ihtiyacımız neden anlamıyorum?
basit cevap bu iletki size $http
veya $timeout
(örneğin bir "yükleme sırasında davranışını test ediyorsanız yapmak isteyebilirsiniz gidermek için böyle $http
veya $timeout
gelenler gibi Açısal sözlerin, beklemez sağlamasıdır "mesaj) veya ayrı bir giriş sayfası gibi Açısal olmayan siteleri veya sayfaları test etme.
Örneğin, içeriği
element(by.css('button[type="submit"]')).click();
browser.ignoreSynchronization = true;
expect(element(by.css('.message')).getText().toBe('Loading...');
browser.ignoreSynchronization = false;
expect(element(by.css('.message')).getText().toBe('Loaded');
bundan daha kapsamlı bir cevap kontrol unsurunu + getirilirken zaman true
olarak ayarlayabilirsiniz bir istek sırasında bir yükleme mesajı ayarlayan bir düğme yani test etmek ayarlayarak olmasıdır true
kontrol akış sonraki eklemeler/enjeksiyonları da browser.waitForAngular
katmayan anlamına gelir. Kontrol akışının anlaşılması ve olaylara ne zaman/nasıl eklendiğinin/enjekte edilmesinin önemli olduğu durumlar vardır. bir çok-aşamalı süreç test browser.wait
kullanırken Örneğin, wait
geçirilen fonksiyon testinde fonksiyonlarının çoğu kontrol akışına ekledikten sonra kontrol akış içine enjekte edilir.
element(by.css('button[type="submit"]')).click();
browser.ignoreSynchronization = true;
expect(element(by.css('.message')).getText().toBe('Stage 1');
browser.wait(function() {
// This function is added to the control flow after the final
// browser.ignoreSynchronization = false in the test
// so we need to set it again here
browser.ignoreSynchronization = true;
return element(by.cssContainingText('.message', 'Stage 2')).isPresent().then(function(isPresent) {
// Cleanup so later tests have the default value of false
browser.ignoreSynchronization = false;
return !isPresent;
});
});
expect(element(by.css('.message')).getText().toBe('Stage 2');
browser.ignoreSynchronization = false;
expect(element(by.css('.message')).getText().toBe('Stage 3');
browser.ignoreSynchronization
kullanarak alternatif doğrudan
element(by.css('button[type="submit"]')).click();
expect(browser.driver.findElement(by.css('.message')).getText().toBe('Loading...');
expect(element(by.css('.message')).getText().toBe('Loaded');
unsurları bulmak için doğrudan sürücü yöntemlerini kullanma sistemi, herhangi devam eden beklemeden onları bulmak için çalışacağı anlamına gelir standart webdriver API erişmektir $http
istekleri çok browser.ignoreSynchronization = true
belirleme gibi bitirmek için.
Bu ayar iletki bir sayfada ya da olmasın açısal beklemek gerekmediğini kontrol eder. Düzgün belgelenmiş, ama burada documentation string from the code olduğu değildir:
/**
* If true, Protractor will not attempt to synchronize with the page before
* performing actions. This can be harmful because Protractor will not wait
* until $timeouts and $http calls have been processed, which can cause
* tests to become flaky. This should be used only when necessary, such as
* when a page continuously polls an API using $timeout.
*
* @type {boolean}
*/
Başka bir deyişle, olmayan bir açısal sitesine karşı test ediyorsanız - true
için ignoreSynchronization
ayarını. Non-angular page opened after a click: gerçek bir dünya örnek olarak, bir açısal sayfadan olmayan bir açısal sayfasını açarken vardı zorluklardan biri görüyoruz.