2014-09-14 34 views
7

È necessario un aiuto per testare le interazioni dell'utente con il webdriver al selenio mocha. Non ho idea di dove trovare quale sia il metodo corretto per ottenere valore dall'input del testo. Provato vari variazioni sul getAttribute(), ecc getText ottengo lo stesso errore:Come accedere al valore di immissione del testo nei test del mocha del selenio web

TypeError: Object [object object] has no method 'getElementText' 

Ecco il mio codice:

var assert = require('assert'), 
    fs = require('fs'); 

var webdriver = require('../node_modules/selenium-webdriver'), 
    test = require('../node_modules/selenium-webdriver/testing'), 
    remote = require('../node_modules/selenium-webdriver/remote'); 


test.describe('Google Search', function() { 
    var driver; 

    this.timeout(60000); 

    test.before(function() { 
    driver = new webdriver.Builder(). 
     withCapabilities(webdriver.Capabilities.chrome()). 
     build(); 
    }); 

    test.it('should append query to title', function() { 

    //setTimeout(done, 60000); 

    driver.get('http://localhost:8080/devanagariTextField/index.html'); 

    driver.findElement(webdriver.By.id('textbox')).sendKeys('gaa'); 
    //driver.findElement(webdriver.By.name('btnG')).click(); 
    driver.wait(function() { 
     return driver.getElementText('value').then(function(text) { 
     console.log('TEXT: ' + text) 
     return 'गा' === text; 
     }); 
    }, 1000); 
    }); 

    //test.after(function() { driver.quit(); }); 
}); 

risposta

8

È necessario eseguire la chiamata getText/getAttribute sull'elemento, non il driver object

var myTextBox = driver.findElement(webdriver.By.id('textbox')); 
myTextBox.sendKeys('gaa'); 

//You will probably want to use getAttribute() 
var elementContent = myTextBox.getText(); 
var elementValue = myTextBox.getAttribute("value"); 
+1

'getAttribute (" valore ")' è * veramente * come si fa ?! Non ha alcun senso. C'è una grande differenza tra l'attributo 'value' di un elemento' input' e la sua proprietà 'value'. Il selenio fa l'orribile cosa che fa jQuery e li configura? –

3

Questo è ciò che ha funzionato per me alla fine. Avevo bisogno di utilizzare la funzione .then() dopo la chiamata sendKeys() e quindi restituire l'attributo valore in quel punto. La risposta di Steve è stata utile, ma mi sono imbattuto in questo, giocando con un esempio configurato su git hub chiamato selenium-mocha-chai-saucelabs.

describe('textbox value', function (done) { 
    it('is expected to equal ka when keys ka are sent', function (done) { 
     driver.findElement(webdriver.By.id("textbox")) 
      .sendKeys("ka") 
      .then(function(){ 
      return driver.findElement(webdriver.By.id("textbox")).getAttribute("value"); 
      }) 
      .then(function (value) { 
       expect(value).to.equal('ka'); 
       done(); 
      }); 
    }); 
}); 
+0

Essendo un ragazzo OO questa sintassi mi sembra assurda, quindi sono contento che tu abbia funzionato! Grazie per il voto, felice di aiutare –

Problemi correlati