虚拟中继器和量角器

ale*_*cxe 15 javascript selenium angularjs protractor angular-material

问题:

在量角器中定位虚拟中继器的规范/首选方法是什么?

故事:

在Angular Material设计中,有一个虚拟转发器,借助动态重用视口区域中可见的行,有助于提高渲染性能.样品:

<div class="md-virtual-repeat-offsetter" style="transform: translateY(0px);">
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">0</div>
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">1</div>
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

目前,我必须使用by.css定位技术:

$$('[md-virtual-repeat="item in ctrl.dynamicItems"]');
Run Code Online (Sandbox Code Playgroud)

奖金问题:

有没有办法让它by.repeater也可以使用md-virtual-repeat

ale*_*cxe 5

按照findRepeaterRows()repeaterMatch()内置的功能,by.repeater定位器使用CSS选择器来寻找不同的"重复"般具有不同前缀的属性:

ng-repeat
ng_repeat
data-ng-repeat
x-ng-repeat
ng:repeat
Run Code Online (Sandbox Code Playgroud)

然后,它会删除所有过滤器,tracking(track by),别名(as),然后检查我们尝试匹配的转发器值.

换句话说,by.repeater此时此刻并不会找到虚拟中继器.

在此处创建了一项功能请求:


此时,考虑到虚拟转发器不支持高级语法元素,track或者as我认为使用CSS选择器就足够了:

$$('[md-virtual-repeat="item in ctrl.dynamicItems"]');
Run Code Online (Sandbox Code Playgroud)