【问题标题】:Adding custom locator shortcuts in Protractor在量角器中添加自定义定位器快捷方式
【发布时间】:2016-11-17 18:07:39
【问题描述】:

在 Protractor 中,有 $ and $$ convenient shortcuts 用于 CSS 选择器:

$(".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"))

【问题讨论】:

    标签: javascript angularjs css-selectors protractor


    【解决方案1】:

    要创建快捷方式,请在全局命名空间和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));
    };
    

    用法:

    $r("item in items")
    $$r("item in items")
    $("#id").$r("item in items")
    $("#id").$$r("item in items")
    

    【讨论】:

    • 我无法在我的项目中实现这一点。我尝试了几种方法。您介意分享您的代码吗,我想了解您是如何将自定义定位器添加到全局命名空间的?我总是收到这个错误:“$x 不是函数”。尝试添加元素(by.xpath)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多