从量角器中的元素内访问内部元素

时间:2015-11-02 08:22:00

标签: angularjs testing protractor pageobjects

我遇到了Page Objects的概念,并用它在Protractor中编写测试,但我遇到了一个问题。旧代码如下。

UNION

我在一个类中组织了代码,比如

SELECT * FROM Base_Table 
LEFT JOIN Type ON Type.Id = Base_Table.Type_Id
WHERE Base_Table.Id = 4

UNION

SELECT * FROM Base_Table  
LEFT JOIN Box_Type ON Box_Type.Id = Base_Table.Type_Id
WHERE Base_Table.Id = 4;

现在用页面对象实现场景(如在代码片段1中),我将代码修改为,

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

1 个答案:

答案 0 :(得分: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-------^

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