2014-09-14 1 views
7

Besoin d'aide pour tester les interactions de l'utilisateur avec le pilote web mocha au sélénium. Aucune idée où trouver la bonne méthode pour obtenir la valeur de la saisie de texte. Essayé différentes variations sur getAttribute(), etc. getText Obtenez la même erreur:Comment accéder à la valeur d'entrée de texte dans les tests mocha de sélénium webdriver

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

Voici mon code:

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(); }); 
}); 

Répondre

8

Vous devez effectuer l'appel getText/getAttribute sur l'élément, et non la objet conducteur

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 (" value ")' est * vraiment * comment vous faites cela ?! Cela n'a aucun sens. Il y a une grande différence entre l'attribut 'value' d'un élément' input' et sa propriété 'value'. Est-ce que Selenium fait l'horrible chose que fait et regrette? –

3

C'est ce qui a fonctionné pour moi à la fin. Je devais utiliser la fonction .then() après l'appel sendKeys(), puis renvoyer l'attribut de valeur à ce point. La réponse de Steve a été utile, mais je suis arrivé à cela en jouant avec un exemple mis en place sur le hub git appelé 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

Etre un gars OO cette syntaxe me semble folle, alors je suis content que vous l'ayez fait fonctionner! Merci pour le vote, heureux d'aider –

Questions connexes