2015-11-02 2 views
3

Я столкнулся с концепцией объектов страницы и использовал его в письменных тестах в Protractor, но перед вами стоит проблема. Старый код был следующим.Доступ к внутреннему элементу изнутри элемента в транспортирторе

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

Теперь для реализации сценария (как в фрагменте кода 1) с Page Objects, я изменил код, как,

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

Я застрял здесь, как получить доступ к qtyElem в пределах productElem.

ответ

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-------^ 

Этот метод описывает одно действие, которое пользователь обычно выполняет одновременно: он видит продукт в позиции и устанавливает количество. Вы можете использовать это, как правило, при проектировании объектов страницы - попытайтесь определить, что представляет собой одно действие пользователя для конкретной ситуации и сделать для него метод.

Смежные вопросы