Protractor console log

getText and most other Protractor methods return promises. You want to put your console.log statement inside the promise resolution:

Using the new Protractor syntax:

element(by.id('view-container')).getText().then(function(text) {
  console.log(text);
});

this is pretty old, but as a former n00b at protractor, I wished there was more documentation.

you could also use:

element(by.id('view-container')).getText().then(console.log);

or what I like to do for readability is put all the objects on a page in their own function, section, or file:

//top declaration of variables
var viewContainer = element(by.id('view-container')).getText();

.... //bunch of code
....

viewContainer.then(console.log);

That will take care of most of your garden-variety debugging needs.

For promises in general, you could try using protractor.promise.all()

let's say you have two things that are both promises:

var getTime      = element(by.xpath(theTimeXpath)).getText();
var getPageTitle = element(by.xpath(thePageTitle)).getInnerHtml();

protractor.promise.all([getTime, getPageTitle]).then(function(theResultArray){

  var timeText           = result[0];
  var pageTitleInnerHtml = result[1];

   console.log(timeText);           // outputs the actual text
   console.log(pageTitleInnerHtml); //outputs the text of the Inner html
});

This second method is useful for when things begin to get more complex. personally, however, I find other ways around this. Although it's not bad, it's kind of funky for other developers having to read my code.