2015-11-02 100 views
3

我遇到了页面对象的概念,并在量角器中使用它来编写测试,但我面临一个问题。旧代码如下。从量角器中的元素内访问内部元素

var productList = element.all(by.repeater('product in contractsCtrl.contracts')); 
productList.get(0).element(by.model('qty')).sendKeys(20); 

我组织了一个类的代码,如

var Product = { 
    productList : element.all(by.repeater('product in contractsCtrl.contracts')), 
    qtyElem : element(by.model('qty')), 
    setProduct : function (pos) { 
    this.productElem = this.productList.get(pos); 
    } 
} 

我们实现的场景(如代码片段)与页面对象,我修改了代码,

var Product = require('product.js'); 
Product.setProduct(0); 

我在这里卡在如何访问productElem内的qtyElem

回答

4

您可以创建一个方法setProductQty(),其中规定数量上某个位置的产品:

var Product = { 

    productList : element.all(by.repeater('product in contractsCtrl.contracts')), 

    setProductQty: function (pos, qty) { 
     var productElem = this.productList.get(pos); 
     productElem.element(by.model('qty')).sendKeys(qty); 
     return this; 
    } 

}; 

和使用将是这样的:

var Product = require('product.js'); 
Product.setProductQty(0, 20); 
// ---product index---^ 
// --------quantity-------^ 

这种方法描述了单个动作哪个用户通常一次执行:他在某个位置看到一个产品并设置一个数量。在设计页面对象时,您可以将其作为规则 - 尝试定义针对特定情况的单个用户操作,并为其制定方法。