如何使用Protractor输入单个退格?

Rap*_*nah 5 angularjs protractor

我想用来.sendKeys()在输入字段中输入文本,然后退格一个字符.我尝试使用以下代码,.sendKeys(protractor.Key.BACK_SPACE)但似乎它清除了整个字段.

我的测试:

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');

    });
});
Run Code Online (Sandbox Code Playgroud)

错误: Expected '' to be 'Ali Khod'.

有没有办法只退一个字符?

更新:

我也尝试过以下操作,因为.sendKeys()默认情况下返回一个promise.

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');

            });

        });

    });
});
Run Code Online (Sandbox Code Playgroud)

测试失败了.

Rap*_*nah 1

我发现的解决方法如下:

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

.getText()我没有使用,而是使用了.getAttribute('value')

  • `.getText()` 返回所选元素开始和结束标记之间的所有内容:`<div>ONLY THIS WILL BE RETURNED</div>`。由于输入是自动关闭的,因此 getText() 不会返回任何内容。正确的方法而不仅仅是解决方法是使用 getAttribute('value'),它返回输入值“Ali Khod”。 (3认同)