Class Condition

java.lang.Object
com.codeborne.selenide.Condition

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

    • visible

      public static final WebElementCondition visible
      Checks if element is visible

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

    • exist

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

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

    • hidden

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

      Opposite to appear

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

    • appear

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

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

    • disappear

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

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

    • interactable

      public static final WebElementCondition 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);


    • readonly

      public static final WebElementCondition readonly

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


      Sample:

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


    • editable

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

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


    • animated

      public static final WebElementCondition animated

      Check that the element is animated. An animated element changes its position or size over time. Implemented for web browser context only.


      Sample:

      $("popup").shouldBe(animated);


      Since:
      v7.0.7
    • empty

      public static final WebElementCondition 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 WebElementCondition image
      Check if image is loaded.
    • focused

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

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

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

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

      public static final WebElementCondition checked
      Checks that checkbox is checked
      See Also:
      • WebElement.isSelected()
    • clickable

      public static final WebElementCondition clickable
      Check if element is clickable: interactable AND enabled.

      Usually you don't need to use this condition. When you just call $("button").click(), Selenide automatically checks that the element is clickable.


      Example:

      $("input[type=button]").shouldBe(clickable);


      Since:
      7.2.0
  • Constructor Details

    • Condition

      public Condition()
  • Method Details

    • attribute

      public static WebElementCondition attribute(String attributeName)
      Check if element has given attribute (with any value)

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

      Parameters:
      attributeName - name of attribute, not null
    • attribute

      public static WebElementCondition attribute(String attributeName, String expectedAttributeValue)

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

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

      public static WebElementCondition 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

      public static WebElementCondition 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

      public static WebElementCondition 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
    • partialValue

      public static WebElementCondition partialValue(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(partialValue("12345 666 77"));

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

      public static WebElementCondition 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

      public static WebElementCondition 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

      public static WebElementCondition exactValue(String value)

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

      Parameters:
      value - expected value of input field
    • name

      public static WebElementCondition 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

      public static WebElementCondition 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

      public static WebElementCondition id(String id)

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

      Parameters:
      id - expected id of input field
    • matchText

      public static WebElementCondition 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.
    • oneOfTexts

      public static WebElementCondition oneOfTexts(String... texts)
      Assert that given element's TEXT case-insensitively CONTAINS at least one of the given texts. Assertion fails if specified collection is empty.

      NB! Ignores multiple whitespaces between words.

      NB! Nulls and blank strings are not allowed in the specified collection (because any element does contain an empty text).

      Throws:
      IllegalArgumentException - If specified collection contains nulls or blank strings.
      Since:
      7.0.3
    • oneOfTextsCaseSensitive

      public static WebElementCondition oneOfTextsCaseSensitive(String... texts)
      Assert that given element's TEXT case-sensitively CONTAINS at least one of the given texts. Assertion fails if specified collection is empty.

      NB! Ignores multiple whitespaces between words.

      NB! Nulls and blank strings are not allowed in the specified collection (because any element does contain an empty text).

      Throws:
      IllegalArgumentException - If specified collection contains nulls or blank strings.
      Since:
      7.0.3
    • oneOfExactTexts

      public static WebElementCondition oneOfExactTexts(String... texts)
      Assert that given element's TEXT case-insensitively EQUALS to one of the given texts. Assertion fails if specified collection is empty.

      NB! Ignores multiple whitespaces between words.

      Throws:
      IllegalArgumentException - If specified collection contains null elements.
      Since:
      7.0.3
    • oneOfExactTextsCaseSensitive

      public static WebElementCondition oneOfExactTextsCaseSensitive(String... texts)
      Assert that given element's TEXT case-sensitively EQUALS to one of the given texts. Assertion fails if specified collection is empty.

      NB! Ignores multiple whitespaces between words.

      Throws:
      IllegalArgumentException - If specified collection contains null elements.
      Since:
      7.0.3
    • partialText

      public static WebElementCondition partialText(String expectedText)
      Assert that given element's text CONTAINS given text

      Sample: $("h1").shouldHave(partialText("ello Joh"))

    • partialTextCaseSensitive

      public static WebElementCondition partialTextCaseSensitive(String expectedText)
      Assert that given element's text CONTAINS given text (case-sensitive)

      Sample: $("h1").should(partialTextCaseSensitive("ELLO jOH"))

    • text

      public static WebElementCondition 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

      public static WebElementCondition 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

      public static WebElementCondition 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

      public static WebElementCondition 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
    • innerText

      public static WebElementCondition innerText(String text)
      Assert that element contains given inner text.

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

      It can be used to check the text of a hidden element.

      Case insensitive

      NB! Ignores multiple whitespaces between words

    • ownText

      public static WebElementCondition 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

      public static WebElementCondition 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
    • exactOwnText

      public static WebElementCondition 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

      public static WebElementCondition 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
    • exactTextCaseSensitive

      public static WebElementCondition 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
    • tagName

      public static WebElementCondition tagName(String cssClass)
      Asserts that element has the given tag name.

      Sample: $(".btn-primary").shouldHave(tagName("button"));

    • cssClass

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

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

    • cssValue

      public static WebElementCondition 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)
    • domAttribute

      public static WebElementCondition domAttribute(String domAttributeName)
      Check if element has given dom attribute (with any value)

      Sample: $("#mydiv").shouldHave(domAttribute("hidden"));

      Parameters:
      domAttributeName - name of dom attribute, not null
      Since:
      7.4.0
    • domAttribute

      public static WebElementCondition domAttribute(String domAttributeName, @Nullable String expectedDomAttributeValue)

      Sample: $("#mydiv").shouldHave(domAttributeValue("hidden", "hidden"));

      Parameters:
      domAttributeName - name of dom attribute
      expectedDomAttributeValue - expected value of dom attribute
      Since:
      7.4.0
    • domProperty

      public static WebElementCondition domProperty(String domPropertyName)
      Check if element has given dom property (with any value)

      Sample: $("#mydiv").shouldHave(domProperty("id"));

      Parameters:
      domPropertyName - name of dom property, not null
      Since:
      7.4.0
    • domProperty

      public static WebElementCondition domProperty(String domPropertyName, @Nullable String expectedDomPropertyValue)

      Sample: $("#my-div").shouldHave(domPropertyValue("id", "my-div"));

      Parameters:
      domPropertyName - name of dom property
      expectedDomPropertyValue - expected value of dom property
      Since:
      7.4.0
    • match

      public static WebElementCondition 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

      public static WebElementCondition not(WebElementCondition condition)
      Negate given condition.

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

      Typically, you don't need to use it.

    • and

      public static WebElementCondition and(String name, WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... 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.
    • allOf

      public static WebElementCondition allOf(String name, WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... conditions)
    • allOf

      public static WebElementCondition allOf(WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... conditions)
      Synonym for and(String, WebElementCondition, WebElementCondition, WebElementCondition...) with "all of" name. Useful for better readability.
    • or

      public static WebElementCondition or(String name, WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... 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.

      Using "or" checks in tests is probably a flag of bad test design. Consider splitting this "or" check into two different methods or tests.

      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.
      See Also:
    • anyOf

      public static WebElementCondition anyOf(String name, WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... conditions)
    • anyOf

      public static WebElementCondition anyOf(WebElementCondition condition1, WebElementCondition condition2, WebElementCondition... conditions)
      Synonym for or(String, WebElementCondition, WebElementCondition, WebElementCondition...) with "any of" name. Useful for better readability.
    • be

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

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