2014-12-25 7 views
5

Desidero utilizzare .sendKeys() per immettere il testo in un campo di input e quindi eseguire il backspaces di un carattere. Ho provato a utilizzare il seguente codice con .sendKeys(protractor.Key.BACK_SPACE) ma sembra che cancelli l'intero campo.Come inserire un singolo backspace con Protractor?

La mia prova:

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

    }); 
}); 

L'errore: Expected '' to be 'Ali Khod'.

C'è un modo per far tornare indietro solo un singolo carattere?

UPDATE:

Ho anche provato il seguente dato .sendKeys() restituisce una promessa per impostazione predefinita.

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

      }); 

     }); 

    }); 
}); 

Il test ha esito negativo.

+3

L'utilizzo di sendKeys (protractor.Key.BACK_SPACE) ha funzionato bene per me. – binarygiant

risposta

0

La soluzione che ho trovato è stata la seguente:

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

Invece di usare .getText(), ho usato .getAttribute('value').

+1

'.getText()' restituisce tutto tra gli elementi selezionati inizia e chiude i tag: '

ONLY THIS WILL BE RETURNED
'. poiché l'input si chiude automaticamente, getText() non restituisce nulla. il modo giusto e non solo una soluzione alternativa è usare getAttribute ('value'), che restituisce il valore degli input 'Ali Khod'. – nilsK

Problemi correlati