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

Access inner element from within an element in protractor

我遇到了页面对象的概念,并在 Protractor 中编写测试时使用了它,但我遇到了一个问题。旧代码如下。

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

我把代码整理成class,喜欢

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

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

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

我被困在这里如何访问 productElem 中的 qtyElem

您可以创建一个方法 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-------^

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