在Protractor中,CSS选择器有$
and $$
convenient shortcuts:
$(".myclass") // means: element(by.css(".myclass"))
$$(".myclass") // means: element.all(by.css(".myclass"))
是否可以为其他定位器引入自定义快捷方式?
更具体地说,如果我们希望通过转发器"获得$r
和$$r
快捷方式,那该怎么办?调用。能够写:
$r("item in items")
$$r("item in items")
而不是:
element(by.repeater("item in items"))
element.all(by.repeater("item in items"))
答案 0 :(得分:4)
要创建快捷方式,请在全局命名空间以及ElementFinder
和ElementArrayFinder
的原型上添加自定义定位器:
global.$r = function(selector) {
return protractor.element(protractor.by.repeater(selector));
};
global.$$r = function(selector) {
return protractor.element.all(protractor.by.repeater(selector));
};
ElementFinder.prototype.$$r = function(selector) {
return this.all(protractor.by.repeater(selector));
};
ElementFinder.prototype.$r = function(selector) {
return this.element(protractor.by.repeater(selector));
};
ElementArrayFinder.prototype.$$r = function(selector) {
return this.all(protractor.by.repeater(selector));
};
用法:
$r("item in items")
$$r("item in items")
$("#id").$r("item in items")
$("#id").$$r("item in items")