Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

ProtractorJS_не корректно работает clear()_не успевает sendKeys()

protractor
protractorjs
testing
Теги: #<Tag:0x00007f7b6499a0e8> #<Tag:0x00007f7b64999fa8> #<Tag:0x00007f7b64999e68>

(Алексей Щербин) #1

Добрый день,

Возникла следующая проблема.
Есть форма, в которой по-умолчанию заполнено поле formStepOne_page.enterFieldSum() значением “950”. Мне нужно значение заменить на другое. Написал код теста (приведу ниже pageobject, если требуется):

PageObject:

var formStepOne_page = function() {
this.enterFieldSum = function() {
		return element(by.model('loan.options.curSum'));
	};
};

Тест:

formStepOne_page.enterFieldSum().clear().then(function(){
	formStepOne_page.enterFieldSum().sendKeys('200');
});

Так вот, когда запускаю тест, то вижу, что он стирает данные с поля, потом автозаполняется значением по-умолчанию “950”, и только потом добавляется/приплюсовывается справа мое новое значение из sendKeys()'a. И получается “950200”, а не “200”. Кто с таким сталкивался?

P.S.: При чем очень странно то, что в другом месте тестируемого продукта тоже есть эта форма (она немного больше) и там тест работает корректно. Но то место, где тест работает, идет ранее по процессу, то есть в моем понимании данные по-умолчанию уже получаются из БД, а не из заданного значения на фронте.


(Алексей Щербин) #2

Разобрался. У меня по коду ранее стояло browser.ignoreSynchronization = false. И вот, после того как я перед тестируемой строкой написал browser.ignoreSynchronization = true, вс заработало.

browser.ignoreSynchronization = true,
formStepOne_page.enterFieldSum().clear();
formStepOne_page.enterFieldSum().sendKeys(200);
browser.ignoreSynchronization = false;

Не смотря на то, что clear() возвращает promise, код работает только без then(), иначе все равно сначала подставляет число по умолчанию.