我遇到了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);
。
答案 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-------^
此方法描述用户通常一次执行的单个操作:他在位置看到产品并设置数量。在设计页面对象时,您可以将其作为规则 - 尝试定义针对特定情况的单个用户操作,并为其创建方法。