7

incapace di capire il motivo per cui non restituire un oggetto un valore di testo, un po 'di codice di prova: uscitagoniometro restituire un oggetto, ma aspetta - valore della element.getText()

describe('columns swap', function() { 

    describe('location column ', function() { 
     it('should swap right', function() { 
      browser.sleep(10000); 
      var fColumn = element(by.xpath('(//*[@class="k-link"])[2]')).getText(); 
      console.log(fColumn); 

Console:

> columns swap 
>  location column { ptor_: { controlFlow: [Function], 
>  schedule: [Function], 
>  getSession: [Function], 
>  getCapabilities: [Function], 
>  quit: [Function], 
>  actions: [Function], 
>  executeScript: [Function], 
>  executeAsyncScript: [Function], 
>  call: [Function], 
>  wait: [Function], 
>  sleep: [Function], 
>  getWindowHandle: [Function], 
>  getAllWindowHandles: [Function], 
>  getPageSource: [Function], 
>  close: [Function], 
>  getCurrentUrl: [Function], ... 

anche se uso questa parte con aspettano():

expect(columnSorting.acpColumn.getText()).to.eventually.equal(fColumn); 

vedo:

1) columns swap location column should swap right: 
    AssertionError: expected 'Location' to equal { Object (ptor_, parentElement 
ArrayFinder, ...) } 

Così, per qualche motivo che posso ottenere il testo da aspettarsi e corretto - 'Location'

Che cosa sto facendo di sbagliato?

risposta

12

getText()restituisce una promessa. Se si desidera registrare un valore effettivo, è necessario per risolvere il problema:

element(by.xpath('(//*[@class="k-link"])[2]')).getText().then(function (value) { 
    console.log(value); 

    expect(columnSorting.acpColumn.getText()).to.eventually.equal(value); 
}); 

Nota che expect() è "collegato" a goniometro/jasminewd per risolvere promesse implicitamente. In altre parole, si può affermare getText() essere uguale al testo desiderato:

expect(element(by.xpath('(//*[@class="k-link"])[2]')).getText()).toEqual('My Text'); 
+0

Si lo so che possiamo usare previsto testo- ma in funzione che non avrebbe funzionato per me, perché avremo diversa traduzione. grazie per l'esempio. fondamentalmente ho bisogno di memorizzare questo 'valore' come var e usarlo per la mia attesa(). ma posso capire come farlo - la mia scarsa conoscenza di js. puoi per favore scrivere un semplice esempio per questo? – kyxap

+0

@kyxap Ho aggiornato la risposta includendo la chiamata expect all'interno della funzione 'then()'. È questo che stai cercando di dire? Grazie. – alecxe

+0

grazie mille – kyxap