量角器/黄瓜/ RequireJs找不到使用定位器错误的元素

时间:2014-07-30 14:44:08

标签: angularjs requirejs protractor cucumberjs

我有一个使用requireJs的AngularJs应用程序,因此它使用引导应用程序的延迟方法。我正在尝试使用Protractor和它内置的黄瓜支持的组合来测试它。

我可以从量角器github页面here运行黄瓜测试,测试通过正常。当我尝试添加测试以测试页面上存在的html元素时,它无法说“没有使用定位器找到元素”,我试图通过绑定或css选择器找到它。

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);

var expect = chai.expect;

module.exports = function() {

var ptor = protractor.getInstance();

this.Before(function(callback) {

    //Otherwise i get Error while waiting for Protractor to sync with the page error
    ptor.ignoreSynchronization = true;
    callback();
});

this.Given(/^I run Cucumber with Protractor$/, function(next) {
    next();
});

this.Given(/^I go on(?: the website)? "([^"]*)"$/, function(url, next) {
    ptor.driver.get('http://0.0.0.0:8000');
    next();
});

this.Then(/^it should still do normal tests$/, function(next) {
    expect(true).to.equal(true);
    next();
});

this.Then(/^it should expose the correct global variables$/, function(next) {
    expect(protractor).to.exist;
    expect(browser).to.exist;
    expect(by).to.exist;
    expect(element).to.exist;
    expect($).to.exist;
    next();
});

this.Then(/the title should equal "([^"]*)"$/, function(text, next) {
    expect(ptor.getTitle()).to.eventually.equal(text).and.notify(next); //passes

    //sleep here just to see the html is definately rendered
    ptor.sleep(2000);

    // when i add this it fails - No element found using locator
    expect(element(by.binding('title')).getText()).to.eventually.equal('Main');

    next();
});

};

我想知道这是一个使用技术组合的问题,因为我没有使用延迟自举与量角器,直到我介绍黄瓜的情况。有没有其他人有使用require /量角器/黄瓜的经验?

1 个答案:

答案 0 :(得分:0)

以下是有关该问题的一些信息Protractor Issue Page

由于您使用的是RequireJS,因此Protractor可能存在同步问题。

browser.ignoreSynchronization = false;