I'm trying to test if an element is visible using protractor. Here's what the element looks like:
<i class="icon-spinner icon-spin ng-hide" ng-show="saving"></i>
When in the chrome console, I can use this jQuery selector to test if the element is visible:
$('[ng-show=saving].icon-spin') [ <i class="icon-spinner icon-spin ng-hide" ng-show="saving"></i> ] > $('[ng-show=saving].icon-spin:visible') []
However, when I try to do the same in protractor, I get this error at runtime:
InvalidElementStateError: invalid element state: Failed to execute 'querySelectorAll' on 'Document': '[ng-show=saving].icon-spin:visible' is not a valid selector.
Why is this not valid? How can I check for visibility using protractor?
isPresent()). toBe(true); And to check if element does not exist we expect it to be false. It returns true if there are any elements present that match the finder.
In protractor, there are, basically, 3 ways to check if an element is present: var elm = element(by.id("myid")); browser. isElementPresent(elm);
Another way is to schedule the comparison at the protractor control flow so it will be executed after all values are available. var oldValue,newValue; element(by.id('foundNumber')). getText(). then(function(text){oldValue=text}) element(by.
This should do it:
expect($('[ng-show=saving].icon-spin').isDisplayed()).toBe(true);
Remember protractor's $
isn't jQuery and :visible
is not yet a part of available CSS selectors + pseudo-selectors
More info at https://stackoverflow.com/a/13388700/511069
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With