2016-07-20 7 views
2

Ich habe eine Liste von Seitenelementen, die ich versuche zu überprüfen, werden auf dem Bildschirm angezeigt.Geben Sie den Objektnamen nicht Objekt

Ich möchte auf die Konsole den Elementnamen ausgeben, nach dem ich suche, aber wenn ich das tue, bekomme ich gerade 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(); 
}); 

Antwort

4

Von dem, was ich Elemente eines detailElements Array verstehen sind ElementFinder Objekte - die Ergebnisse der element(by.smth(...)) Anrufe.

ElementFinder String-Darstellung ist nicht etwas, was Sie auf der Konsole sehen möchten. Stattdessen würde ich vorschlagen, anstelle eines Arrays ein Objekt/Mapping:

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

Dann können Sie die Ausgabe der Schlüssel von detailElements auf der Konsole, warum die Elemente arbeiten, die Werte des detailElements Objekt sind:

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

Danke @alecxe Ich werde dies eine Chance geben, sobald ich meine Umgebung wieder eingerichtet habe. – DarthOpto

+0

Vielen Dank. Das hat wunderbar funktioniert. – DarthOpto

Verwandte Themen