添加自定义定位器时如何使打字稿不会因编译错误而哭泣

时间:2016-08-12 17:02:56

标签: javascript testing angular typescript protractor

我写了一个自定义定位器:

onPrepare: function() {
  browser.ignoreSynchronization = true;
  by.addLocator('automationId', function(value, parentElement) {
    parentElement = parentElement || document;
     var nodes = parentElement.querySelectorAll('[automationId]');
     return Array.prototype.filter.call(nodes, function(node) {
       return (node.getAttribute('automationId') === value);
     });
  });
},

但是当我尝试使用它并运行时:

element(by.automationId('auto-id'));

错误是:

Property automationId does not exist on type IProtractorLocationStrategy

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用自定义匹配器遇到同样的问题。没有尝试过命名空间扩展(但你肯定应该),所以我没有干净的解决方案。

但作为修补程序(真的很脏),您可以尝试通过['']访问自定义定位器:

element(by['automationId']('auto-id'));

请注意,打字稿会将此视为“任意”类型,因此您将失去打字对象的好处。