我在Angular 1.6.3網站上使用了Protractor 4.0.14。連續兩次相同的量角器測試,第二次失敗
我執行兩個相同的測試。第一個會成功,但不會是第二個。任何想法 ?
it('Should return a toast error on inferior amount', function() {
$$('#purposeList input.amount').first().clear().sendKeys('4999');
$$('button[type="submit"]').get(0).click();
expect($('div.toast.toast-error').isPresent()).toBe(true);
element.all(by.model('purpose.amount')).first().clear();
$$('button.toast-close-button').each(function (item) {
item.click();
});
expect($('button.toast-close-button').isPresent()).toBe(false);
});
it('Should return a toast error on inferior amount BIS', function() {
$$('#purposeList input.amount').first().clear().sendKeys('4999');
$$('button[type="submit"]').get(0).click();
expect($('div.toast.toast-error').isPresent()).toBe(true);
element.all(by.model('purpose.amount')).first().clear();
$$('button.toast-close-button').each(function (item) {
item.click();
});
expect($('button.toast-close-button').isPresent()).toBe(false);
});
該字段提供了錯誤的數量,所以當我提交時它會拋出一個toast錯誤。當我手動執行時,我得到吐司錯誤。使用量角器時,只有第一個相同的測試會通過。另一方面,它看起來像吐司永遠不會很快啓動或關閉。
我試過睡覺,忽略瀏覽器等待同步。我試圖用處理錯誤敬酒的服務中的$ interval替換$ timeout(儘管可能存在其他$ timeout)。它沒有改變任何東西。
它實際上是第一個想到的是失敗,並沒有從錯誤中沒有實際的幫助,第二個它的,它只是一個預計的假,而不是真正:
Message:
Expected false to be true.
編輯:
所以@LostJon,通過處理每一個承諾,你的意思是這樣的:
it('Should return a toast error on inferior than authorized purpose amount on step 1 BIS', function() {
$$('#purposeList input.amount').first().clear().then(function() {
$$('#purposeList input.amount').first().sendKeys('4999').then(function() {
$$('button[type="submit"]').get(0).click().then(function() {
expect($('div.toast.toast-error').isPresent()).toBe(true);
element.all(by.model('purpose.amount')).first().clear().then(function() {
$$('button.toast-close-button').each(function (item) {
item.click();
}).then(function() {
expect($('button.toast-close-button').isPresent()).toBe(false);
});
});
});
});
});
});
我試過了,結果相同。
編輯:
顯然,這是一個ignoreSynchronization = TRUE,這是等待,而不是之前的內部。因爲我還設置了browser.manage()。timeouts()。implicitlyWait(2000),所以沒有同步,我們仍然在等待元素,但它不準確。
您能否在您的問題上添加其他信息? 就像第一次點擊後發生的情況一樣,html示例,它在哪裏失敗,在控制檯中顯示了什麼錯誤等。 –
您可以首先確定哪兩個失敗?你可以把一個console.log來區分這兩個 –