FrankyBoy
FrankyBoy

Reputation: 1946

protractor getText returns empty string for non-empty element

I have issues getting the text from an element in protractor. For other elements of the page it works as expected, just not for this one :/

<p class="error theme-info-i ng-binding ng-scope" ng-if="firstFormError && form.$invalid" ng-click="goToErrorField(firstFormError)">
  <span class="emphasize ng-binding">User ID</span> (The user ID is required.)
</p>

I can locate both elements without problems using by.className, and getInnerHtml/getOuterHtml works as expected. However getText returns an empty string for both.

Upvotes: 5

Views: 5181

Answers (3)

Berci
Berci

Reputation: 3386

Had the same problem.

expect(element(By.css('span.emphasize.ng-binding')).getAttribute('textContent'))...

Seems to work just fine for me (this of course if you have only one span with those classes or is the first one. else you need to be more specific. But anyway if you still need to solve the problem try with .getAttribute('textContent') )

Upvotes: 2

Megha
Megha

Reputation: 1581

You can try

var firstName = element(by.model('firstName'))
expect(firstName.getAttribute('value'))

This gives you the value of the input box.

Upvotes: 3

FrankyBoy
FrankyBoy

Reputation: 1946

Found the reason ... its a two-step registration where the first step has the same notification area and just gets hidden. For reasons beyond my comprehension the devs update both notification areas (not just the one on the current page), so inner/outerHtml just seemingly returned the "correct content" and because the first area was hidden, getText returned empty as by spec.

I think I'm gonna file some internal bug report now wtf we are doing with those notifications ;)

Upvotes: 4

Related Questions