Class Condition

java.lang.Object
com.codeborne.selenide.Condition
Direct Known Subclasses:
And, Attribute, AttributeWithValue, Checked, CssClass, CssValue, CustomMatch, Disabled, Enabled, Exist, ExplainedCondition, Focused, Hidden, IsImageLoaded, MatchAttributeWithValue, NamedCondition, Not, Or, PseudoElementPropertyWithValue, Selected, TextCondition, Value, Visible

@ParametersAreNonnullByDefault public abstract class Condition extends Object
Conditions to match web elements: checks for visibility, text etc.
  • Field Details

    • visible

      public static final Condition visible
      Checks if element is visible

      Sample: $("input").shouldBe(visible);

    • exist

      public static final Condition exist
      Check if element exist. It can be visible or hidden.

      Sample: $("input").should(exist);

    • hidden

      public static final Condition hidden
      Checks that element is not visible or does not exist.

      Opposite to appear

      Sample: $("input").shouldBe(hidden);

    • appear

      public static final Condition appear
      Synonym for visible - may be used for better readability

      Sample: $("#logoutLink").should(appear);

    • appears

      @Deprecated public static final Condition appears
      Deprecated.
      Synonym for visible - may be used for better readability

      $("#logoutLink").should(appear, 10000);

    • disappear

      public static final Condition disappear
      Synonym for hidden - may be used for better readability:

      $("#loginLink").should(disappear);

    • interactable

      public static final Condition interactable
      Check if element is interactable:
      1. either is visible, or
      2. has css property "opacity: 0"

      Elements which are transparent (opacity:0) are considered to be invisible, but interactable. User can click, doubleClick etc., and enter text etc. to transparent elements (for all major browsers).


      Example:

      $("input[type=file]").shouldBe(interactable);


      Since:
      6.5.0
    • readonly

      public static final Condition readonly

      Check if element has "readonly" attribute (with any value)


      Sample:

      $("input").shouldBe(readonly);


    • editable

      public static final Condition editable
      Check if element is "editable":

      Sample: $("input").shouldBe(editable);


      Since:
      6.5.0
    • empty

      public static final Condition empty
      1) For input element, check that value is missing or empty

      Sample: $("#input").shouldBe(empty)

      2) For other elements, check that text is empty

      Sample: $("h2").shouldBe(empty)

    • image

      public static final Condition image
      Check if image is loaded.
    • focused

      public static final Condition focused
      Check if browser focus is currently in given element.
    • enabled

      public static final Condition enabled
      Checks that element is not disabled
      See Also:
      • WebElement.isEnabled()
    • disabled

      public static final Condition disabled
      Checks that element is disabled
      See Also:
      • WebElement.isEnabled()
    • selected

      public static final Condition selected
      Checks that element is selected (inputs like drop-downs etc.)
      See Also:
      • WebElement.isSelected()
    • checked

      public static final Condition checked
      Checks that checkbox is checked
      See Also:
      • WebElement.isSelected()
  • Constructor Details

    • Condition

      public Condition(String name)
    • Condition

      public Condition(String name, boolean missingElementSatisfiesCondition)
  • Method Details

    • attribute

      @CheckReturnValue @Nonnull public static Condition attribute(String attributeName)
      Check if element has given attribute (with any value)

      Sample: $("#mydiv").shouldHave(attribute("fileId"));

      Parameters:
      attributeName - name of attribute, not null
      Returns:
      true iff attribute exists
    • attribute

      @CheckReturnValue @Nonnull public static Condition attribute(String attributeName, String expectedAttributeValue)

      Sample: $("#mydiv").shouldHave(attribute("fileId", "12345"));

      Parameters:
      attributeName - name of attribute
      expectedAttributeValue - expected value of attribute
    • attributeMatching

      @CheckReturnValue @Nonnull public static Condition attributeMatching(String attributeName, String attributeRegex)
      Assert that given element's attribute matches given regular expression

      Sample: $("h1").shouldHave(attributeMatching("fileId", ".*12345.*"))

      Parameters:
      attributeName - name of attribute
      attributeRegex - regex to match attribute value
    • href

      @CheckReturnValue @Nonnull public static Condition href(String href)

      Sample: $("#mydiv").shouldHave(href("/one/two/three.pdf"));

      It looks similar to `$.shouldHave(attribute("href", href))`, but it overcomes the fact that Selenium returns full url (even if "href" attribute in html contains relative url).

      Parameters:
      href - expected value of "href" attribute
    • value

      @CheckReturnValue @Nonnull public static Condition value(String expectedValue)
      Assert that element contains given "value" attribute as substring NB! Ignores difference in non-visible characters like spaces, non-breakable spaces, tabs, newlines etc.

      Sample: $("input").shouldHave(value("12345 666 77"));

      Parameters:
      expectedValue - expected value of "value" attribute
    • pseudo

      @CheckReturnValue @Nonnull public static Condition pseudo(String pseudoElementName, String propertyName, String expectedValue)
      Check that element has given the property value of the pseudo-element

      Sample: $("input").shouldHave(pseudo(":first-letter", "color", "#ff0000"));

      Parameters:
      pseudoElementName - pseudo-element name of the element, ":before", ":after", ":first-letter", ":first-line", ":selection"
      propertyName - property name of the pseudo-element
      expectedValue - expected value of the property
    • pseudo

      @CheckReturnValue @Nonnull public static Condition pseudo(String pseudoElementName, String expectedValue)
      Check that element has given the "content" property of the pseudo-element

      Sample: $("input").shouldHave(pseudo(":before", "Hello"));

      Parameters:
      pseudoElementName - pseudo-element name of the element, ":before", ":after"
      expectedValue - expected content of the pseudo-element
    • exactValue

      @CheckReturnValue @Nonnull public static Condition exactValue(String value)

      Sample: $("#input").shouldHave(exactValue("John"));

      Parameters:
      value - expected value of input field
    • name

      @CheckReturnValue @Nonnull public static Condition name(String name)
      Asserts the name attribute of the element to be exact string

      Sample: $("#input").shouldHave(name("username"))

      Parameters:
      name - expected name of input field
    • type

      @CheckReturnValue @Nonnull public static Condition type(String type)
      Asserts the type attribute of the element to be exact string

      Sample: $("#input").shouldHave(type("checkbox"))

      Parameters:
      type - expected type of input field
    • id

      @CheckReturnValue @Nonnull public static Condition id(String id)

      Sample: $("#input").shouldHave(id("myForm"))

      Parameters:
      id - expected id of input field
    • matchText

      @CheckReturnValue @Nonnull public static Condition matchText(String regex)
      Assert that given element's text matches given regular expression

      Sample: $("h1").should(matchText("Hello\s*John"))

      Parameters:
      regex - e.g. Kicked.*Chuck Norris - in this case ".*" can contain any characters including spaces, tabs, CR etc.
    • text

      @CheckReturnValue @Nonnull public static Condition text(String text)

      Assert that element contains given text as a substring.

      Sample: $("h1").shouldHave(text("Hello\s*John"))

      NB! Case insensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element. NB! Empty string is not allowed (because any element does contain an empty text).
      Throws:
      IllegalArgumentException - if given text is null or empty
    • selectedText

      @CheckReturnValue @Nonnull public static Condition selectedText(String expectedText)
      Checks on a element that exactly given text is selected (=marked with mouse/keyboard)

      Sample: $("input").shouldHave(selectedText("Text"))

      NB! Case sensitive

      Parameters:
      expectedText - expected selected text of the element
    • textCaseSensitive

      @CheckReturnValue @Nonnull public static Condition textCaseSensitive(String text)
      Assert that element contains given text as a case-sensitive substring

      Sample: $("h1").shouldHave(textCaseSensitive("Hello\s*John"))

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element
    • exactText

      @CheckReturnValue @Nonnull public static Condition exactText(String text)
      Assert that element has exactly (case-insensitive) given text

      Sample: $("h1").shouldHave(exactText("Hello"))

      Case insensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element
    • ownText

      @CheckReturnValue @Nonnull public static Condition ownText(String text)
      Assert that element contains given text (without checking child elements).

      Sample: $("h1").shouldHave(ownText("Hello"))

      Case insensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element without its children
    • ownTextCaseSensitive

      @CheckReturnValue @Nonnull public static Condition ownTextCaseSensitive(String text)
      Assert that element contains given text (without checking child elements).

      Sample: $("h1").shouldHave(ownTextCaseSensitive("Hello"))

      Case sensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element without its children
      Since:
      6.6.0
    • exactOwnText

      @CheckReturnValue @Nonnull public static Condition exactOwnText(String text)
      Assert that element has given text (without checking child elements).

      Sample: $("h1").shouldHave(ownText("Hello"))

      Case insensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element without its children
    • exactOwnTextCaseSensitive

      @CheckReturnValue @Nonnull public static Condition exactOwnTextCaseSensitive(String text)
      Assert that element has given text (without checking child elements).

      Sample: $("h1").shouldHave(exactOwnTextCaseSensitive("Hello"))

      Case sensitive

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element without its children
      Since:
      6.6.0
    • exactTextCaseSensitive

      @CheckReturnValue @Nonnull public static Condition exactTextCaseSensitive(String text)
      Assert that element has exactly the given text

      Sample: $("h1").shouldHave(exactTextCaseSensitive("Hello"))

      NB! Ignores multiple whitespaces between words

      Parameters:
      text - expected text of HTML element
    • cssClass

      @CheckReturnValue @Nonnull public static Condition cssClass(String cssClass)
      Asserts that element has the given class. Element may have other classes as well.

      Sample: $("input").shouldHave(cssClass("active"));

    • cssValue

      @CheckReturnValue @Nonnull public static Condition cssValue(String propertyName, @Nullable String expectedValue)
      Checks if css property (style) applies for the element. Both explicit and computed properties are supported.

      Note that if css property is missing WebElement.getCssValue(java.lang.String) return empty string. In this case you should assert against empty string.

      Sample:

      <input style="font-size: 12">

      $("input").shouldHave(cssValue("font-size", "12"));

      $("input").shouldHave(cssValue("display", "block"));

      Parameters:
      propertyName - the css property (style) name of the element
      expectedValue - expected value of css property
      See Also:
      • WebElement.getCssValue(java.lang.String)
    • match

      @CheckReturnValue @Nonnull public static Condition match(String description, Predicate<org.openqa.selenium.WebElement> predicate)
      Checks if element matches the given predicate.

      Sample: $("input").should(match("empty value attribute", el -> el.getAttribute("value").isEmpty()));

      Parameters:
      description - the description of the predicate
      predicate - the Predicate to match
    • not

      @CheckReturnValue @Nonnull public static Condition not(Condition condition)
      Negate given condition.

      Used for methods like $.shouldNot(exist), $.shouldNotBe(visible)

      Typically, you don't need to use it.

    • and

      @CheckReturnValue @Nonnull public static Condition and(String name, Condition condition1, Condition condition2, Condition... conditions)
      Check if element matches ALL given conditions. The method signature makes you to pass at least 2 conditions, otherwise it would be nonsense.
      Parameters:
      name - Name of this condition, like "empty" (meaning e.g. empty text AND empty value).
      condition1 - first condition to match
      condition2 - second condition to match
      conditions - Other conditions to match
      Returns:
      logical AND for given conditions.
    • or

      @CheckReturnValue @Nonnull public static Condition or(String name, Condition condition1, Condition condition2, Condition... conditions)
      Check if element matches ANY of given conditions. The method signature makes you to pass at least 2 conditions, otherwise it would be nonsense.
      Parameters:
      name - Name of this condition, like "error" (meaning e.g. "error" OR "failed").
      condition1 - first condition to match
      condition2 - second condition to match
      conditions - Other conditions to match
      Returns:
      logical OR for given conditions.
    • be

      @CheckReturnValue @Nonnull public static Condition be(Condition delegate)
      Used to form human-readable condition expression Example element.should(be(visible),have(text("abc"))
      Parameters:
      delegate - next condition to wrap
      Returns:
      Condition
    • have

      @CheckReturnValue @Nonnull public static Condition have(Condition delegate)
      Used to form human-readable condition expression Example element.should(be(visible),have(text("abc"))
      Parameters:
      delegate - next condition to wrap
      Returns:
      Condition
    • apply

      @Deprecated public boolean apply(Driver driver, org.openqa.selenium.WebElement element)
      Deprecated.
      Check if given element matches this condition.
      Parameters:
      element - given WebElement
      Returns:
      true if element matches condition
    • check

      @Nonnull @CheckReturnValue public CheckResult check(Driver driver, org.openqa.selenium.WebElement element)
      Check if given element matches this condition
      Parameters:
      driver - selenide driver
      element - given WebElement
      Returns:
      CheckResult.Verdict.ACCEPT if element matches condition, or CheckResult.Verdict.REJECT if element doesn't match (and we should keep trying until timeout).
      Since:
      6.0.0
    • actualValue

      @Nullable @Deprecated public String actualValue(Driver driver, org.openqa.selenium.WebElement element)
      Deprecated.
      not needed anymore since the actual value is returned by method check(Driver, WebElement)
      If element didn't match the condition, returns the actual value of element. Used in error reporting. Optional. Makes sense only if you need to add some additional important info to error message.
      Parameters:
      driver - given driver
      element - given WebElement
      Returns:
      any string that needs to be appended to error message.
    • negate

      @Nonnull @CheckReturnValue public Condition negate()
    • because

      @Nonnull @CheckReturnValue public Condition because(String message)
      Should be used for explaining the reason of condition
    • toString

      @Nonnull @CheckReturnValue public String toString()
      Overrides:
      toString in class Object
    • getName

      @Nonnull @CheckReturnValue public String getName()
    • missingElementSatisfiesCondition

      @CheckReturnValue public boolean missingElementSatisfiesCondition()