在 Protractor 的中继器中检索元素

Retrieve element within repeater in Protractor

我确定这是一个简单的问题,但我的眼睛慢慢地死在我身上。

基本上,有没有办法在转发器中获取元素?例如,我在中继器中有一堆锚点,但是附加到锚点的 class 是通用的,所以类似于:

<li ng-repeat="mainItem in mainNav" class="nav">
    <a class="link" href="#">Link 1</a>
</li>

<li ng-repeat="subItem in subNav" class="nav">
    <a class="link" href="#">Link 2</a>
</li>

这里我只想获取mainNav转发器内的锚点(更重要的是每个锚点对应的hrefs)。

我在考虑 filter(),但不完全确定我可以在此处应用什么功能来仅检索所需的锚点/href(这实际上与另一个问题有关,可以在此处找到我映射的地方hrefs - )

这就是我的想法...任何帮助将不胜感激:

element
    .all(by.repeater('mainItem in mainNav')).
    .filter(function(items) {
        // TODO: not sure what i can do here, except something like:
        // items.getText().then({})
    })
    .map(function(link) {
        return link.getAttribute('href');
    })
    .then(function(links) {
        for (var i = 0; i < links.length; i++) {
            browser.get(links[i]);
        }
    });

你需要map()这里:

element.all(by.repeater('subItem in subNav')).map(function (elm) {
    return elm.element(by.css("a.link")).getAttribute("href");
}).then(function (links) {
    for (var i = 0; i < links.length; i++) {
        console.log(links[i]);
    }
});