返回项目名称而不是对象对象

时间:2016-07-20 16:44:35

标签: javascript jasmine protractor

我有一个我要验证的页面元素列表正在屏幕上显示。

我想向控制台输出我正在寻找的元素名称但是当我这样做时,我只是得到object Object

    var detailElements = [disabledRuleWarning, detailsLabel, detailsHide,
    nameLabel, nameField, ruleActive, groupLabel, threatTypeLabel,
    threatTypeDropdown, descLabel, descField, tagsLabel, tagsField,
    severityLabel, actionsLabel, addAction];

    it(TestSuiteName + 'TC5_Verify Details Elements are displayed', function(){
    console.log('TC5 Verify Details Elements are displayed');
    DetectionRules.newRuleButton.click();
    browser.waitForAngular();
    detailElements.forEach((item) => {
        console.log('Checking for item: ' + item);
        expect(item.isDisplayed()).toBe(true);
    });
    DetectionRules.deleteRule.click();
});

1 个答案:

答案 0 :(得分:4)

据我所知,detailElements数组的项目为ElementFinder个对象 - element(by.smth(...))次调用的结果。

ElementFinder字符串表示不是您想要在控制台上看到的内容。相反,我建议使用对象/映射而不是数组:

var detailElements = {
    'disabledRuleWarning': disabledRuleWarning,
    // ...
    'addAction': addAction
}

然后,您可以在控制台上输出detailElements的键,以便操作作为detailElements对象值的元素:

Object.keys(detailElements).forEach(function(key) {
    console.log('Checking for item: ' + key);
    expect(detailElements[key].isDisplayed()).toBe(true);
});