возвращаемая строка из input.getAttribute('value') отсутствует символ

Я разрабатываю e2e-тесты для углового приложения, но столкнулся с проблемой. Я получаю значение из ‹ input type="text" /> с помощью метода .getAttribute('value'), но в нем отсутствует один символ. Я проверил свойства HTML элемента, который содержит значение, и правильно его отображает. Я проследил шаги вручную в приложении, и там он также отображается правильно. Мне это кажется очень нелогичным, но, возможно, у кого-то был опыт в этом вопросе. Заранее спасибо.

HTML-код:

<input class="form-control ng-pristine ng-untouched ng-valid" ng-model="schedule.cronValue" id="cronValue" disabled="disabled">

Код транспортира для получения значения элемента:

//fill our CRON variable with the generated CRON value
        element(by.id('cronValue')).getAttribute('value').then(function(attr){
            CRON = attr;
        });

Ожидаемый результат — это значение из моей базы данных. Значение CRON извлекается из текста типа ввода. Скриншот ситуации, если необходимо: http://imgur.com/Co4mGyL

Вывод Console.log:

Expected value:0 0 0 1/1 * ? *
CRON:0 0 0 1/ * ? *

Как видите, после «/» отсутствует «1».


person Tom Nijs    schedule 30.03.2015    source источник


Ответы (1)


Трудно сказать, не имея возможности воспроизвести проблему, но в качестве обходного пути я бы попробовал использовать evaluate() и "оценить" значение модели:

element(by.id('cronValue')).evaluate('schedule.cronValue').then(function(value) {
    CRON = value;
});

Если бы значение CRON все равно имело бы такое же неверное значение - то, по крайней мере, вы бы знали, что это значение действительно задано в модели и, вероятно, исходит из базы данных как есть.

person alecxe    schedule 30.03.2015
comment
При реализации вашего ответа проблема, похоже, сохраняется. Вывод CRON теперь нулевой, может ли это указывать на проблему в самом приложении? - person Tom Nijs; 30.03.2015
comment
@TomNijs спасибо, что попробовали это. Не могли бы вы также проверить, есть ли другие элементы с id="cronValue"? - person alecxe; 30.03.2015
comment
id=cronValue встречается только один раз, я только что проверил. - person Tom Nijs; 30.03.2015
comment
@TomNijs спасибо, еще одна странная быстрая проверка - можете ли вы добавить browser.sleep(3000) перед попыткой получить значение ввода и посмотреть, имеет ли это какое-то значение? Спасибо. - person alecxe; 30.03.2015
comment
@TomNijs, хотя я думаю, что это может быть проблема с самим приложением - я имею в виду, что сгенерированное значение - это не то, что вы ожидаете, из-за ошибки где-то в генераторе синтаксиса cron ... или где-то на пути передачи или очистки этого значения из базы данных - одни мысли и дикие догадки. - person alecxe; 30.03.2015
comment
Браузер.sleep(3000) выявил проблему. Я очищаю текстовое поле в генераторе cron, затем делаю .sendKeys, затем получаю вывод. Похоже, что значение cron не обновляется до тех пор, пока не будет нажата кнопка «Сохранить», что, как я полагаю, не оставляет достаточно времени для сохранения нового значения. - person Tom Nijs; 30.03.2015