How to automate with “ExpectedConditions” in Selenium WebDriver
Return type for “ExpectedConditions.xxxx()” is generally falls under following categories:
Alert
Boolean
WebElement
List
WebDriver
Object
Following code snippet demonstrates usage and validation based on return type. (ExpectedCondition testing with Selenium). We can add necessary asserts based on test automation requirements
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class ExpectedConditionsExamples {
public static void main(String[] args) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, 10);
String URL = “http://www.vpl.ca/”;
driver.get(URL);
Boolean isTitleCorrect = wait.until(ExpectedConditions.titleContains(“Public”));
System.out.println(“titleContains results” + isTitleCorrect);
Boolean titleIs = wait.until(ExpectedConditions.titleIs(“Vancouver Public Library |”));
System.out.println(“Wait completed for title to be \”Vancouver Public Library |\”” + titleIs);
Boolean urlContains = wait.until(ExpectedConditions.urlContains(“vpl”));
System.out.println(“urlContains results” + urlContains);
Boolean urlToBe = wait.until(ExpectedConditions.urlToBe(“http://www.vpl.ca/”));
System.out.println(“urlToBe results” + urlToBe);
String regex = “\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]”;
Boolean urlMatches = wait.until(ExpectedConditions.urlMatches(regex));
System.out.println(“urlMatches results” + urlToBe);
// ExpectedConditions.elementToBeSelected
WebElement searchDDwn = driver.findElement(By.xpath(“.//*[@id=’edit-source’]”));
Select dropdown = new Select(searchDDwn);
dropdown.selectByValue(“Website”);
WebElement selected = dropdown.getFirstSelectedOption();
boolean elementToBeSelected = wait.until(ExpectedConditions.elementToBeSelected(selected));
System.out.println(“elementToBeSelected results” + elementToBeSelected);
// ExpectedConditions.invisibilityOfElementLocated
By searchDDwn1 = By.xpath(“.//*[@id=’edit-source1′]”);
boolean invisibilityOfElementLocated = wait.until(ExpectedConditions.invisibilityOfElementLocated(searchDDwn1));
System.out.println(“invisibilityOfElementLocated results” + invisibilityOfElementLocated);
// ExpectedConditions.invisibilityOfElementWithText
By searchDDwn2 = By.xpath(“.//*[text()=’edit-source1′]”);
boolean invisibilityOfElementWithText = wait
.until(ExpectedConditions.invisibilityOfElementWithText(searchDDwn2, “hello”));
System.out.println(“invisibilityOfElementWithText results” + invisibilityOfElementWithText);
// ExpectedConditions.stalenessOf
driver.navigate().refresh();
By searchDDwn3 = By.xpath(“.//*[text()=’edit-source1′]”);
boolean stalenessOf = wait.until(ExpectedConditions.invisibilityOfElementWithText(searchDDwn2, “hello”));
System.out.println(“stalenessOf results” + stalenessOf);
// ExpectedConditions.textToBePresentInElementLocated
By searchBoxId = By.id(“edit-search”);
WebElement searchBox = wait.until(ExpectedConditions.elementToBeClickable(searchBoxId));
searchBox.sendKeys(“java”);
boolean res = wait.until(ExpectedConditions.textToBePresentInElementLocated(searchBoxId, “java”));
System.out.println(“textToBePresentInElement results” + stalenessOf);
By searchButtonId = By.id(“edit-submit”);
WebElement searchButton = wait.until(ExpectedConditions.visibilityOfElementLocated(searchButtonId));
searchButton.click();
Thread.sleep(2000);
// 1. visibilityOfAllElementsLocatedBy
By titleLocator = By.xpath(“//button[@data-test-id=’list-view-button’]”);
List
int titleCount = titles.size();
System.out.println(“Number of titles” + titleCount);
By authorLocator = By.xpath(“//button[@data-test-id=’list-view-button’]”);
List
int authorCount = author.size();
System.out.println(“Number of authors” + authorCount);
driver.quit();
}
}
Summary of ExpectedConditions checks supported by Selenium:
S.No. return Type => Function => Description
1 static ExpectedCondition
2 static ExpectedCondition
3 static ExpectedCondition
4 static ExpectedCondition
5 static ExpectedCondition
6 static ExpectedCondition
7 static ExpectedCondition
8 static ExpectedCondition
9 static ExpectedCondition
10 static ExpectedCondition
11 static ExpectedCondition
12 static ExpectedCondition
13 static ExpectedCondition
14 static ExpectedCondition
15 static ExpectedCondition
16 static ExpectedCondition
17 static ExpectedCondition
18 static ExpectedCondition
19 static ExpectedCondition
20 static ExpectedCondition
21 static ExpectedCondition
22 static ExpectedCondition
ExpectedConditions.alertIsPresent()
ExpectedConditions.and(ExpectedCondition>… conditions)
ExpectedConditions.attributeContains(org.openqa.selenium.By locator, String attribute, String value)
ExpectedConditions.attributeContains(org.openqa.selenium.WebElement element, String attribute, String value)
ExpectedConditions.attributeToBe(org.openqa.selenium.By locator, String attribute, String value)
ExpectedConditions.attributeToBe(org.openqa.selenium.WebElement element, String attribute, String value)
ExpectedConditions.attributeToBeNotEmpty(org.openqa.selenium.WebElement element, String attribute)
ExpectedConditions.elementSelectionStateToBe(org.openqa.selenium.By locator, boolean selected)
ExpectedConditions.elementSelectionStateToBe(org.openqa.selenium.WebElement element, boolean selected)
ExpectedConditions.elementToBeClickable(org.openqa.selenium.By locator)
ExpectedConditions.elementToBeClickable(org.openqa.selenium.WebElement element)
ExpectedConditions.elementToBeSelected(org.openqa.selenium.By locator)
ExpectedConditions.elementToBeSelected(org.openqa.selenium.WebElement element)
ExpectedConditions.frameToBeAvailableAndSwitchToIt(org.openqa.selenium.By locator)
ExpectedConditions.frameToBeAvailableAndSwitchToIt(int frameLocator)
ExpectedConditions.frameToBeAvailableAndSwitchToIt(String frameLocator)
ExpectedConditions.frameToBeAvailableAndSwitchToIt(org.openqa.selenium.WebElement frameLocator)
ExpectedConditions.invisibilityOfAllElements(List
ExpectedConditions.invisibilityOfElementLocated(org.openqa.selenium.By locator)
ExpectedConditions.invisibilityOfElementWithText(org.openqa.selenium.By locator, String text)
ExpectedConditions.javaScriptThrowsNoExceptions(String javaScript)
ExpectedConditions.jsReturnsValue(String javaScript)
ExpectedConditions.not(ExpectedCondition> condition)
ExpectedConditions.numberOfElementsToBe(org.openqa.selenium.By locator, Integer number)
ExpectedConditions.numberOfElementsToBeLessThan(org.openqa.selenium.By locator, Integer number)
ExpectedConditions.numberOfElementsToBeMoreThan(org.openqa.selenium.By locator, Integer number)
ExpectedConditions.numberOfWindowsToBe(int expectedNumberOfWindows)
ExpectedConditions.or(ExpectedCondition>… conditions)
ExpectedConditions.presenceOfAllElementsLocatedBy(org.openqa.selenium.By locator)
ExpectedConditions.presenceOfElementLocated(org.openqa.selenium.By locator)
ExpectedConditions.presenceOfNestedElementLocatedBy(org.openqa.selenium.By locator, org.openqa.selenium.By sub_locator)
ExpectedConditions.presenceOfNestedElementLocatedBy(org.openqa.selenium.WebElement element, org.openqa.selenium.By sub_locator)
ExpectedConditions.presenceOfNestedElementsLocatedBy(org.openqa.selenium.By locator, org.openqa.selenium.By sub_locator)
ExpectedConditions.refreshed(ExpectedCondition
ExpectedConditions.stalenessOf(org.openqa.selenium.WebElement element)
ExpectedConditions.textMatches(org.openqa.selenium.By locator, Pattern pattern)
ExpectedConditions.textToBe(org.openqa.selenium.By locator, String value)
ExpectedConditions.textToBePresentInElementLocated(By, String)
ExpectedConditions.textToBePresentInElement(org.openqa.selenium.WebElement element, String text)
ExpectedConditions.textToBePresentInElementLocated(org.openqa.selenium.By locator, String text)
ExpectedConditions.textToBePresentInElementValue(org.openqa.selenium.By locator, String text)
ExpectedConditions.textToBePresentInElementValue(org.openqa.selenium.WebElement element, String text)
ExpectedConditions.titleContains(String title)
ExpectedConditions.titleIs(String title)
ExpectedConditions.urlContains(String fraction)
ExpectedConditions.urlMatches(String regex)
ExpectedConditions.urlToBe(String url)
ExpectedConditions.visibilityOf(org.openqa.selenium.WebElement element)
ExpectedConditions.visibilityOfAllElements(List
ExpectedConditions.visibilityOfAllElementsLocatedBy(org.openqa.selenium.By locator)
ExpectedConditions.visibilityOfElementLocated(org.openqa.selenium.By locator)
ExpectedConditions.visibilityOfNestedElementsLocatedBy(org.openqa.selenium.By locator, org.openqa.selenium.By sub_locator)
ExpectedConditions.visibilityOfNestedElementsLocatedBy(org.openqa.selenium.WebElement element, org.openqa.selenium.By sub_locator)
0 comments