【问题标题】:protractor click specific element in repeater by binding量角器通过绑定单击转发器中的特定元素
【发布时间】:2015-05-14 14:12:15
【问题描述】:

我知道过去曾以不同的形式提出过这个问题,但仍然没有找到确切的答案。

我需要在中继器中找到一个元素并单击它。 中继器是应用程序列表,我需要找到属性“displayName”等于特定变量(例如“appName1”)的特定应用程序。

这是中继器:

<div class="col-md-3 ng-scope" ng-repeat="app in userApps"> <a data-ui-sref="myAppById({appId:app.id})" class="square_container" href="/developers/myApps/ab7d4369-a2da-4bc5-92a5-a19a1af2db1d"> <strong class="app-display-name ng-binding">appName</strong>... 

这只是一部分。

例如,我需要在 userApps 中找到其 displayName 等于“appName1”的应用并单击它。

【问题讨论】:

    标签: javascript testing protractor ng-repeat end-to-end


    【解决方案1】:

    有多种方法可以定位所需元素,但我会链接 element.all()element() 并使用 by.xpath() locator strategy

    var a = element.all(by.repeater("app in userApps")).element(by.xpath(".//a[strong = 'appName1']"));
    a.click();
    

    或者,使用filter()

    element.all(by.repeater("app in userApps")).filter(function (elm) {
        return elm.evaluate("app.displayName").then(function (displayName) {
            return displayName === "appName1";
        });
    }).then(function (elms) {
        var link = elms[0].element(by.tagName("a"));
        link.click();
    });
    

    【讨论】:

    • 感谢您的回答。尝试时出现错误:TypeError: Object [object Object] has no method 'element'
    • @user2880391 感谢您的检查,您使用的是哪个量角器版本?尝试升级到绝对支持链接 element 和 element.all 的最新版本。
    • 嘿,我已经升级到最新版本 (2.0.0),但仍然出现该错误。
    • 有什么想法吗?仍然面临这个问题。
    • @user2880391 当然,更新答案中的替代方案怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多