2014-09-14 2 views
7

mocha selenium webdriver와의 사용자 상호 작용 테스트에 도움이 필요합니다. 텍스트 입력 값을 얻는 올바른 방법을 찾는 위치를 알 수 없습니다. 여기 셀레늄 webdriver 모카 테스트에서 텍스트 입력 값에 액세스하는 방법

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

내 코드입니다 :의 getAttribute(), gettext에 등의 시도 다양한 변형이 같은 오류를 가져옵니다

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

답변

8

당신은 요소에 gettext에/getAttribute를 호출을 수행해야하지 드라이버 개체

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 ("값") '이 작업을 수행하는 방법 * 정말 *입니다! 그건 말이 안되요. 'input' 엘리먼트의'value' 애트리뷰트와'value' 애트리뷰트 사이에는 큰 차이가 있습니다. Selenium은 jQuery가하는 일을 끔찍한 일로 처리합니까? –

3

이것은 결국 나를 위해 일한 것입니다. sendKeys() 호출 후에 .then() 함수를 사용하고 그 시점에서 value 특성을 반환해야했습니다. Steve의 대답은 도움이되었지만 selenium-mocha-chai-saucelabs이라는 git hub에서 설정 한 예를 가지고 놀았습니다.

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

OO 사람이 구문은 제게 정신 나간 것처럼 보이므로 기쁘게 생각합니다. 기꺼이 투표 해 주셔서 감사합니다. –