在量角器中添加自定义定位器快捷方式

ale*_*cxe 4 javascript css-selectors angularjs protractor

在量角器,还有$$$方便快捷的CSS选择:

$(".myclass")  // means: element(by.css(".myclass"))
$$(".myclass")  // means: element.all(by.css(".myclass"))
Run Code Online (Sandbox Code Playgroud)

是否可以为其他定位器引入自定义快捷方式


更具体地说,如果我们想要“by repeater”调用的a$r$$r快捷方式,该怎么办。为了能够写:

$r("item in items")  
$$r("item in items")
Run Code Online (Sandbox Code Playgroud)

代替:

element(by.repeater("item in items"))
element.all(by.repeater("item in items"))
Run Code Online (Sandbox Code Playgroud)

Flo*_* B. 5

要创建一个快捷方式,添加自定义定位的全局命名空间和原型ElementFinderElementArrayFinder

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));
};
Run Code Online (Sandbox Code Playgroud)

用法:

$r("item in items")
$$r("item in items")
$("#id").$r("item in items")
$("#id").$$r("item in items")
Run Code Online (Sandbox Code Playgroud)