I have a curious case where the selenium chrome driver getText() method (java) returns an empty string for some elements, even though it returns a non-empty str
getText()
if you don't care about isDisplayed or scrolling position, you can also write
String text = ((JavaScriptExecutor)driver).executeScript("return $(arguments[0]).text();", element);
or without jquery
String text = ((JavaScriptExecutor)driver).executeScript("return arguments[0].innerText;", element);