2017-02-01 1 views
3

У меня есть угловая страница, которая показывает или скрывает страну dropDownList, основанную на значении radioButton. Если rb истинно, тогда ddl скрывается, а если ddl ложно, отображается ddl. Это делается непосредственно в HTML-документе ddl, добавив в тег select следующий атрибут: ng-show="!vm.inscriptor.isLocalCountry".Испытание преграды с участием ng-show

Все работает хорошо, как и ожидалось, на следующий тест транспортир, кроме:

it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click(); 
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
}); 

Как и следовало ожидать, когда переключатель для истинного значения нажата, то DDL получает скрыт, однако «isDisplayed» ожидают броски следующее сообщение об ошибке:

Expected true to be falsy.

Единственная причина, я могу думать о том, что ожидать утверждение выполняется до завершения нажмите ОБРАБОТКА. Я попытался реорганизовать испытание на следующее:

it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click().then(function() { 
     expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
     expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
    }); 
}); 

, но я все равно получаю случайные результаты с ожиданием.

Если я добавлю browser.sleep (5000), результаты ожиданий будут отображаться правильно, но везде, где я читал, говорится, что browser.sleep - последнее средство.

Есть ли другой способ сказать транспортиру, чтобы ждать завершения обработки? Любые другие предложения?

Thx

ответ

1

Вы можете использовать browser.wait() для элемента, который будет скрыт после click(). И добавить, что вам не нужно приковать обещания Click() и expect() как транспортир Flow Control делает это для вас

Вы можете иметь что-то вроде этого

it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click(); 
    browser.wait(protractor.ExpectedConditions.invisibilityOf(pages.register.ddlCountries), 10000); 
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
}); 
+0

Спасибо за ваш ответ, но не должен» t «click()» позаботится об ожидании до обработки угловых отделок? Почему мне нужно включить условие ожидания? – aplon

+0

Это хороший вопрос. Транспортир по умолчанию ждет окончания угловой активности. Это означает, что он будет ждать обновления значения vm.inscriptor.isLocalCountry. Но анимация скрытого элемента занимает некоторое время, и Protractor не ждет его – AdityaReddy

+0

Получил это. Спасибо за ответ и объяснение !!! – aplon

Смежные вопросы