【问题标题】:How do I access the text input value in selenium webdriver mocha tests如何在 selenium webdriver mocha 测试中访问文本输入值
【发布时间】:2014-11-08 02:00:50
【问题描述】:

需要帮助测试用户与 mocha selenium webdriver 的交互。不知道在哪里可以找到正确的方法来获取文本输入的价值。尝试了 getAttribute()、getText 等的各种变体。得到相同的错误:

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

这是我的代码:

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

【问题讨论】:

    标签: selenium-webdriver mocha.js


    【解决方案1】:

    您需要对元素执行 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");
    

    【讨论】:

    • getAttribute("value")真的你是怎么做到的?!这没有任何意义。 input 元素的 value 属性与其value 属性之间存在很大差异。 Selenium 会做 jQuery 所做的可怕事情并将它们混为一谈吗?
    【解决方案2】:

    这最终对我有用。我需要在sendKeys() 调用之后使用.then() 函数,然后在该点返回值属性。史蒂夫的回答很有帮助,但我是通过在 git hub 上设置一个名为 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();
              });
        });
    });
    

    【讨论】:

    • 作为一个面向对象的人,这种语法对我来说似乎很疯狂,所以我很高兴你能成功!感谢投票,乐于助人
    猜你喜欢
    • 2021-09-03
    • 2013-10-08
    • 2013-05-05
    • 2014-06-29
    • 1970-01-01
    • 2016-12-11
    • 2012-08-05
    • 2017-02-22
    相关资源
    最近更新 更多