1

If I define a page object myPage:

return { 
  myButton: element(by.css('#my-button'))
};

And then elsewhere perform an isElementPresent check:

return browser.driver
        .isElementPresent(myPage.myButton);

I get the folowing error:

Error: Failed: Invalid locator

Why?

I suspect if I remove the element invocation, this would work. element returns an elementFinder IIUC. But isElementPresent is clearly not designed to work with elementFinders. Why?

Ben Aston
  • 53,718
  • 65
  • 205
  • 331

1 Answers1

2

.isElementPresent() supports locators or web elements only, you can call .getWebElement() to get the web element from an element finder object:

return browser.isElementPresent(myPage.myButton.getWebElement());

You can also get the locator back from an element finder:

return browser.isElementPresent(myPage.myButton.locator());

Or, you can use the isPresent() method instead:

return myPage.myButton.isPresent();

Also see:

Community
  • 1
  • 1
alecxe
  • 462,703
  • 120
  • 1,088
  • 1,195