2015-01-26 11 views
7

Nel mio documento HTML ho il seguente codice:Goniometro: Cercando di leggere il testo dopo aver scritto alla casella di testo per il test e2e

<label class="field" for="first_name">First Name:</label> 
<span class="pull-right"><input type="text" id="first_name"> 
    name="first_name" ng-model="first_name"> 
</span> 

Questo mi darà una casella di testo con un'etichetta accanto ad essa dicendo "Nome ".

Ho poi scrivere il mio nome nella casella di testo utilizzando il seguente codice:

element(by.model('first_name')).sendKeys('Frank'); 

questo codice scriverà Frank nella casella di testo, ma ora il mio obiettivo è quello di provare a leggere il testo dalla casella di testo per rendere sicuro che in realtà ha scritto il mio nome. Sto avendo molti problemi a farlo.

Ho provato ad utilizzare il seguente codice per leggere dalla casella di testo:

expect(element(by.model('first_name')).getText()).to.equal('Frank'); 

Ma ottengo questo errore:

AssertionError: expected { Object (locator_, parentElementFinder_, ...) } to equal 'Frank'

anche quando provo a fare un:

console.log(element(by.model('first_name')).getText()); 

Viene visualizzato questo errore:

{ locator_: { findElementsOverride: [Function], toString: [Function: toString] }, parentElementFinder_: null, opt_actionResult_: { then: [Function: then], cancel: [Function: cancel], isPending: [Function: isPending] }, opt_index_: undefined, click: [Function], sendKeys: [Function], getTagName: [Function],
getCssValue: [Function], getAttribute: [Function], getText: [Function], getSize: [Function], getLocation: [Function],
isEnabled: [Function], isSelected: [Function], submit: [Function], clear: [Function], isDisplayed: [Function], getOuterHtml: [Function], getInnerHtml: [Function], toWireValue: [Function] }

Ottengo lo stesso errore quando si tenta di utilizzare getAttribute('value'). Non sono sicuro di cosa significhi esattamente l'errore e non sono sicuro di cosa sto guardando quando utilizzo console.log(). Sono abbastanza nuovo nell'usare il goniometro. Qualsiasi aiuto è molto apprezzato e ti ringrazio in anticipo.

EDIT: spec.js PIENO

var chai   = require('chai'), 
    chaiAsPromised = require('chai-as-promised'); 

chai.use(chaiAsPromised); 

expect = chai.expect; 

before(function() { 
    // suite wide initial setup here 
    browser.get("http://127.0.0.1:5000/"); 
    browser.waitForAngular(); 
}); 

it('Should redirect and load template',function(){ 
    element(by.id('authentication')) 
     .element(by.css('.text-center')) 
     .element(by.linkText('Click here')) 
     .click(); 
    expect(browser.getCurrentUrl()).to.eventually.have.string('/#/home'); 
}); 

it('Should Enter name into text box', function(){ 
    element(by.model('first_name')).sendKeys('Frank'); 
    expect(element(by.model('first_name')).getAttribute('value')) 
     .to.equal('Frank'); 
}); 

risposta

8

Poiché si tratta di un elemento input si sta lavorando, è necessario leggere l'attributo value:

expect(element(by.model('first_name')).getAttribute('value')).toEqual('Frank'); 

Il vero problema è che si è ignorando lo expect() - in questo caso è necessario risolvere la promessa manualmente usando then():

element(by.model('first_name')).getAttribute('value').then(function (value) { 
    expect(value).to.equal('Frank'); 
}); 
+0

Ho già provato questo, ma sto ottenendo lo stesso errore: AssertionError: expected {Object (locator_, parentElementFinder_, ...)} uguale a 'Frank' – Frank

+0

@FrankInsana potresti pubblicare il codice completo delle tue specifiche e notare il versione del goniometro stai usando? Grazie. – alecxe

+0

OMG TI AMO !!! Funziona!! ho provato a usare ".then" anche se a quanto pare stavo sbagliando. WOW GRAZIE!! +1 – Frank

Problemi correlati