【问题标题】:Protractor: custom locators量角器:自定义定位器
【发布时间】:2015-08-21 10:00:54
【问题描述】:

我有这个代码:

  by.addLocator('Name',
  function(spanText, opt_parentElement) {
    var using = opt_parentElement || document;
    var td = using.querySelectorAll('td');
      return Array.prototype.filter.call(td, function(teg) {
        return teg.getAttribute("Name") === spanText;
      });
  });

这是一种通过属性“名称”进行搜索的简单方法。但它不是通用的,因为它搜索带有标签td 的元素。我怎样才能让它独立于标记?

【问题讨论】:

    标签: angularjs protractor angularjs-e2e e2e-testing


    【解决方案1】:

    您可以向定位器添加任意数量的参数,因此在spanText 之后您可以添加例如tagName。您可以走得更远,不要将自己置于使用仅标签参数的范围内,而是使用querySelectorAll() 支持的任何选择器:

    by.addLocator('Name', function (spanText, selector, opt_parentElement) {
        var using = opt_parentElement || document;
        var els = using.querySelectorAll(selector);
        return Array.prototype.filter.call(els, function (el) {
            return el.getAttribute('Name') === spanText;
        });
    });
    

    用法:

    // find all span on the page with Name="Alice"
    element(by.Name('Alice', 'span'))
    
    // find all .row within #container with Name="Bob"
    element(by.Name('Bob', '#container .row')); 
    

    【讨论】:

      猜你喜欢
      • 2014-08-18
      • 2016-11-17
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 2020-03-21
      • 1970-01-01
      相关资源
      最近更新 更多