2014-12-25 5 views
5

Я хотел бы использовать .sendKeys() для ввода текста в поле ввода, а затем обратно на один символ. Я пробовал использовать следующий код с .sendKeys(protractor.Key.BACK_SPACE), но похоже, что он очищает все поле.Как ввести одиночное backspace с помощью Protractor?

Мой тест:

describe('backspace', function() { 
    it('types some stuff and backspaces one character', function() { 
     element(by.model('invoice.customerName')).sendKeys('Ali Khoda'); 

     element(by.model('invoice.customerName')).sendKeys(protractor.Key.BACK_SPACE); 

     expect(element(by.model('invoice.customerName')).getText()).toBe('Ali Khod'); 

    }); 
}); 

Ошибка: Expected '' to be 'Ali Khod'.

Есть ли способ, чтобы символ назад только один символ?

UPDATE:

Я также попытался следующие, поскольку .sendKeys() возвращает обещание по умолчанию.

describe('backspace', function() { 
    it('types some stuff and backspaces one character', function() { 
     element(by.model('invoice.customerName')).sendKeys('Ali Khoda').then(function() { 

      element(by.model('invoice.customerName')).sendKeys(protractor.Key.BACK_SPACE).then(function() { 

       expect(element(by.model('invoice.customerName')).getText()).toBe('Ali Khod'); 

      }); 

     }); 

    }); 
}); 

Тестирование не проходит точно так же.

+3

Использование sendKeys (protractor.Key.BACK_SPACE) отлично сработало для меня. – binarygiant

ответ

0

Обходной я нашел следующее:

expect(element(by.model('invoice.customerName')).getAttribute('value')).toBe('Ali Khod');

Вместо использования .getText(), я использовал .getAttribute('value').

+1

'.getText()' возвращает все между выбранными элементами: начало и закрытие тегов: '

ONLY THIS WILL BE RETURNED
'. Поскольку вход закрывается, getText() ничего не возвращает. правильный способ, а не только обходной путь - использовать getAttribute ('value'), который возвращает значение ввода «Ali Khod». – nilsK