无法调用未定义的方法'id'

时间:2014-12-17 19:45:50

标签: protractor cucumberjs

我的world.js看起来像这样:

var protractor = require('protractor');
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().usingServer('xxxxx').
    withCapabilities(webdriver.Capabilities.firefox()).build();

driver.manage().timeouts().setScriptTimeout(100000);


module.exports.World = function World(callback) {
    this.browser = protractor.wrapDriver(driver);
    this.by = protractor.by;
    callback();
};

然后在steps.js:

{
     element(by.id('username')).sendKeys("admin");
}

当我使用cucumber.js运行它时,错误是:

  

TypeError:无法调用方法' id'未定义的

但如果我删除world.js并使用量角器运行它,它就可以。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您似乎未在全球范围内导出by。我不确定你为什么能够使用element函数 - 但无论如何,你应该做的事情可能是:

module.exports.World = function World(callback) {
    global.browser = protractor.wrapDriver(driver);
    global.by = protractor.by; 
};