如何使用量角器在页面对象中转换下面的行

时间:2015-11-17 15:22:03

标签: protractor

想转换下面的行

rows.element(by.xpath(".//*[@ng-model='strategy.COMMENT']")).clear()

进入页面对象,如

rows.dataCatcherPage.strategyAUMValue.clear()

但是我收到了错误

  

“失败:无法读取属性'strategyAUMValue'未定义”

这是Page对象

strategyAUMValue: {
    get: function () {
        return element(by.xpath(".//*[@ng-model='strategy.AUM_VALUE']"));
    }
},

1 个答案:

答案 0 :(得分:1)

这个怎么样:

.

规范

module.exports = new function () {
    var elements : {
        strategyAUMValue : element(by.xpath(".//*[@ng-model='strategy.AUM_VALUE']"))
    };

    this.clear = {
        strategyAUMValue : elements.strategyAUMValue.clear()
    };

    this.getText = {
        strategyAUMValue : elements.strategyAUMValue.getText()
    };
};

这使您的页面元素可以是私有的(分隔您的框架图层),但可以让您完全访问测试所需的所有操作。您可以通过向元素部分添加任何其他元素来扩展它,然后添加到元素测试所需的任何this.clear / getText / isDisplayed类型函数。

一些可扩展性:

var dataCacherPage = require('./dataCacher.page.js');

describe('Data cacher', function(){
    it('can clear the strategy aum value', function(){
        dataCacherPage.clear.strategyAUMValue();
        expect(dataCacherPage.clear.strategyAUMValue()).toEqual('', 'Strategy AUM Value should have been an empty string');
    });
});

module.exports = new function () {
    var elements : {
        strategyAUMValue : element(by.xpath(".//*[@ng-model='strategy.AUM_VALUE']")),
        // Get an element where multiple exist
        coolElement : $$('[name="coolElement"]')
    };

    this.clear = {
        strategyAUMValue : elements.strategyAUMValue.clear()
    };

    this.getText = {
        strategyAUMValue : elements.strategyAUMValue.getText(),
        coolElement : elements.coolElement.getText()
    };
};