Транспортир .sendKeys () не работает на входах с ngModel - PullRequest
0 голосов
/ 25 июня 2018

Мне не удалось найти ничего по этой теме, поэтому я решил спросить.

В настоящее время я пишу тесты E2E для моего приложения Angular 5. E2E - этовыполняется Транспортиром в соответствии с настройками в проекте генератора угловых интерфейсов по умолчанию.Мне нужна возможность изменить значение поля ввода текста в моих тестах E2E.

Мой текущий код.

...
it('should submit report.',() => {
    page.setField("100");
...

Вышеприведенное ссылается на этот класс и метод

import { browser, by, element } from 'protractor';

export class Page {

setField(text: string): Page {
    let field = element(by.id('myField'));
    field.sendKeys(text);
    return this;
}    
...

и мой html.

<input id="myField" decimal="16" dataLoadedEvent="{{formatData}}" [(ngModel)]="rm.dataField" class="form-control input-sm">

Это оченьпросто.Очевидно, я обобщил это для потребления ... Но, надеюсь, это все еще дает понять.

Замечания:

  • Если я удалю из поля ввода html следующее, .sendKeys () будет работать

    decimal="16" dataLoadedEvent="{{formatData}}" [(ngModel)]="rm.dataField"
    
  • Если я просто удалю

    decimal="16" dataLoadedEvent="{{formatData}}" 
    

    sendKeys () по-прежнему не работает.Это означает, что проблема связана с привязкой [(ngModel)], которая возникает в поле.Не с моей пользовательской директивой десятичного формата.

Итак, мой вопрос: что мне нужно сделать, чтобы .sendKeys () работал с полями, которые связаны с использованием [(ngModel)]?

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Я тоже сталкивался с такой же проблемой.Я решил, как показано ниже.

element(by.css('[name="firstName"]')).sendKeys('Protector User');
0 голосов
/ 27 июня 2018

Мне удалось решить эту проблему, выполнив следующие действия:

field.clear().then(() => {
    field.sendKeys(text);
});

Я видел это решение во время поиска в Google, но я боялся добавлять дополнительные асинхронные процессы в тесты E2E (как часто это делает транспортирне реагируй на это любезно).Однако, как только я реализовал вышеизложенное, мои поля начали обновляться

Надеюсь, это кому-нибудь поможет.

...