在Protractor中检索转发器中的元素

时间:2015-05-13 16:35:02

标签: angularjs jasmine protractor angularjs-e2e e2e-testing

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

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

<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(),但不完全确定我可以在这里应用什么函数来仅检索所需的锚点/ hrefs(这实际上与另一个问题有关,可以在这里找到我映射hrefs的地方 - Protractor clicking through an array of elements

这就是我的想法......任何帮助都会受到赞赏:

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]);
        }
    });

1 个答案:

答案 0 :(得分:2)

您需要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]);
    }
});