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

Return the item name not object Object

本文关键字:对象 object 项目 返回      更新时间:2023-09-26

我有一个页面元素列表,我正在尝试验证这些元素是否显示在屏幕上。

我想向控制台输出我正在寻找的元素名称,但当我这样做时,我只得到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();
});

根据我的理解,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);
});