2014-09-14 7 views
7

Potrzebujesz pomocy w testowaniu interakcji użytkownika z programem webowym mocha selenium. Nie mam pojęcia, gdzie znaleźć właściwą metodę uzyskiwania wartości wprowadzania tekstu. Próbowali różne wariacje na getAttribute(), getText itp uzyskać ten sam błąd:Jak uzyskać dostęp do wartości wejściowej tekstu w testach mocha selenium webdriver

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

Oto mój kod:

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

Odpowiedz

8

trzeba wykonać połączenie getText/getAttribute na elemencie, a nie obiekt sterownika

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 (" wartość ")' jest * naprawdę * jak to zrobić ?! To nie ma sensu. Istnieje ogromna różnica między atrybutem "value" elementu 'input' i jego właściwością' value'. Czy Selenium robi straszną rzecz, którą robi jQuery i łączy je? –

3

To właśnie dla mnie zadziałało. Musiałem użyć funkcji .then() po wywołaniu sendKeys(), a następnie zwrócić atrybut wartości w tym miejscu. Odpowiedź Steve'a była pomocna, ale doszedłem do tego, bawiąc się z przykładem skonfigurowanym na git hub o nazwie 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

Będąc facetem OO, ta składnia wydaje mi się szalona, ​​więc cieszę się, że to działa! Dzięki za głosowanie, chętnie pomożemy –

Powiązane problemy