Search in sources :

Example 16 with ExpectedCondition

use of org.openqa.selenium.support.ui.ExpectedCondition in project thewaiter by iamalittletester.

the class Waiter method click.

/**
 * Try to click on an element during the specifiedTimeout number of seconds.
 *
 * @param element          - the element to click on
 * @param driver           - the WebDriver instance
 * @param specifiedTimeout - amount of seconds you want to wait for
 */
public void click(WebElement element, WebDriver driver, int specifiedTimeout) {
    WebDriverWait wait = new WebDriverWait(driver, specifiedTimeout);
    ExpectedCondition<Boolean> elementIsClickable = arg0 -> {
        try {
            element.click();
            return true;
        } catch (Exception e) {
            return false;
        }
    };
    wait.until(elementIsClickable);
}
Also used : WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) Wait(org.openqa.selenium.support.ui.Wait) WebDriver(org.openqa.selenium.WebDriver) ExpectedCondition(org.openqa.selenium.support.ui.ExpectedCondition) WebElement(org.openqa.selenium.WebElement) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)

Example 17 with ExpectedCondition

use of org.openqa.selenium.support.ui.ExpectedCondition in project thewaiter by iamalittletester.

the class Waiter method waitForElementAttributeContainsString_IgnoreCase.

/**
 * Method that waits for an element's specified attribute's value to contain another specified String, no matter
 * the case of the actual or expected value.
 * Compares the value resulted from getAttribute(nameOfAttribute) on the element with the expected String,
 * ignoring the cases.
 * Will wait for up to the specifiedTimeout number of seconds for the expected condition to occur.
 *
 * @param element          - the WebElement whose attribute we are interested in
 * @param attribute        - the attribute whose value needs to be compared to another value
 * @param expectedString   - the expected value of the WebElement's attribute, case insensitive
 * @param driver           - the WebDriver instance
 * @param specifiedTimeout - amount of seconds you want to wait for
 */
public void waitForElementAttributeContainsString_IgnoreCase(WebElement element, String attribute, String expectedString, WebDriver driver, int specifiedTimeout) {
    WebDriverWait wait = new WebDriverWait(driver, specifiedTimeout);
    ExpectedCondition<Boolean> elementAttributeContainsStringIC = arg0 -> element.getAttribute(attribute).toLowerCase().contains(expectedString.toLowerCase());
    wait.until(elementAttributeContainsStringIC);
}
Also used : WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) Wait(org.openqa.selenium.support.ui.Wait) WebDriver(org.openqa.selenium.WebDriver) ExpectedCondition(org.openqa.selenium.support.ui.ExpectedCondition) WebElement(org.openqa.selenium.WebElement) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)

Example 18 with ExpectedCondition

use of org.openqa.selenium.support.ui.ExpectedCondition in project thewaiter by iamalittletester.

the class Waiter method waitForUrlContains_IgnoreCase.

/**
 * Wait for a URL containing a specified String to open in the browser, ignoring the case of the url.
 * Checks whether a lower case value of the actual URL contains a lower case value of the expected String.
 * Wait for the specifiedTimeout number of seconds.
 *
 * @param expectedString   - the String that needs to be included in the URL
 * @param driver           - the WebDriver instance
 * @param specifiedTimeout - amount of seconds you want to wait for
 */
public void waitForUrlContains_IgnoreCase(String expectedString, WebDriver driver, int specifiedTimeout) {
    WebDriverWait wait = new WebDriverWait(driver, specifiedTimeout);
    ExpectedCondition<Boolean> urlIsCorrect = arg0 -> driver.getCurrentUrl().toLowerCase().contains(expectedString.toLowerCase());
    wait.until(urlIsCorrect);
    waitForPageLoadComplete(driver, specifiedTimeout);
}
Also used : WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) Wait(org.openqa.selenium.support.ui.Wait) WebDriver(org.openqa.selenium.WebDriver) ExpectedCondition(org.openqa.selenium.support.ui.ExpectedCondition) WebElement(org.openqa.selenium.WebElement) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)

Example 19 with ExpectedCondition

use of org.openqa.selenium.support.ui.ExpectedCondition in project thewaiter by iamalittletester.

the class Waiter method waitForElementTextContainsString_IgnoreWhitespaces.

/**
 * Method that waits for the text on the element (whose
 * whitespaces are removed) to contain an expected String (whose whitespaces are also removed).
 * Basically, does a getText() on the WebElement, removes all whitespaces from this resulting String, then checks
 * that this value contains another String that has no whitespaces.
 * Whitespaces include: space, new line, tab.
 * When calling the method, the expectedString can contain whitespaces, as they are removed inside this method.
 * Therefore, 'this      string  here' will contain 'str  ing here'.
 * Will wait for up to the specifiedTimeout number of seconds for the text on the element to be the expected one.
 *
 * @param element          - the WebElement whose text will be compared to an expected value after removing the
 *                         whitespaces on this text
 * @param expectedString   - the value expected to be part of the WebElement's text on which a whitespace removal is
 *                         also done
 * @param driver           - the WebDriver instance
 * @param specifiedTimeout - amount of seconds you want to wait for
 */
public void waitForElementTextContainsString_IgnoreWhitespaces(WebElement element, String expectedString, WebDriver driver, int specifiedTimeout) {
    WebDriverWait wait = new WebDriverWait(driver, specifiedTimeout);
    ExpectedCondition<Boolean> elementTextContainsString = arg0 -> element.getText().replaceAll("\\s", "").contains(expectedString.replaceAll("\\s", ""));
    wait.until(elementTextContainsString);
}
Also used : WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) Wait(org.openqa.selenium.support.ui.Wait) WebDriver(org.openqa.selenium.WebDriver) ExpectedCondition(org.openqa.selenium.support.ui.ExpectedCondition) WebElement(org.openqa.selenium.WebElement) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)

Example 20 with ExpectedCondition

use of org.openqa.selenium.support.ui.ExpectedCondition in project thewaiter by iamalittletester.

the class Waiter method waitForElementAttributeContainsString_IgnoreWhitespaces.

/**
 * Method that waits for an element's attribute value (whose whitespaces are removed) to contain an expected
 * String (whose whitespaces are also removed).
 * Basically, does a getAttribute(nameOfAttribute) on the WebElement, removes all whitespaces from this resulting
 * String, then compares this value to another String that contains no whitespaces.
 * When calling the method, the expectedString can contain whitespaces, as they are removed inside this method.
 * Whitespaces include: space, new line, tab.
 * Having said that, only the non whitespace characters are compared.
 * Will wait for up to the specified timeout number of seconds for expected condition to occur.
 *
 * @param element          - the WebElement whose attribute will be verified
 * @param attribute        - the attribute whose value will be verified
 * @param expectedString   - the expected value of the WebElement's attribute on which a whitespace removal is also
 *                         done
 * @param driver           - the WebDriver instance
 * @param specifiedTimeout - the amount of seconds to wait for the condition to occur
 */
public void waitForElementAttributeContainsString_IgnoreWhitespaces(WebElement element, String attribute, String expectedString, WebDriver driver, int specifiedTimeout) {
    WebDriverWait wait = new WebDriverWait(driver, specifiedTimeout);
    ExpectedCondition<Boolean> elementAttributeContainsStringIW = arg0 -> element.getAttribute(attribute).replaceAll("\\s", "").contains(expectedString.replaceAll("\\s", ""));
    wait.until(elementAttributeContainsStringIW);
}
Also used : WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait) JavascriptExecutor(org.openqa.selenium.JavascriptExecutor) Wait(org.openqa.selenium.support.ui.Wait) WebDriver(org.openqa.selenium.WebDriver) ExpectedCondition(org.openqa.selenium.support.ui.ExpectedCondition) WebElement(org.openqa.selenium.WebElement) WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)

Aggregations

ExpectedCondition (org.openqa.selenium.support.ui.ExpectedCondition)57 WebDriver (org.openqa.selenium.WebDriver)54 WebElement (org.openqa.selenium.WebElement)45 WebDriverWait (org.openqa.selenium.support.ui.WebDriverWait)44 JavascriptExecutor (org.openqa.selenium.JavascriptExecutor)31 By (org.openqa.selenium.By)19 Wait (org.openqa.selenium.support.ui.Wait)19 CoreMatchers.notNullValue (org.hamcrest.CoreMatchers.notNullValue)16 MatcherAssert.assertThat (org.hamcrest.MatcherAssert.assertThat)16 List (java.util.List)15 WebDriverException (org.openqa.selenium.WebDriverException)15 Test (org.testng.annotations.Test)15 NoAlertPresentException (org.openqa.selenium.NoAlertPresentException)14 BeforeMethod (org.testng.annotations.BeforeMethod)14 Map (java.util.Map)13 ExpectedConditions (org.openqa.selenium.support.ui.ExpectedConditions)12 AfterMethod (org.testng.annotations.AfterMethod)12 ArrayList (java.util.ArrayList)11 Iterator (java.util.Iterator)11 Optional (java.util.Optional)11