using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
using ExpectedConditions = SeleniumExtras.WaitHelpers.ExpectedConditions;
namespace SeleniumBase.PageObjects
{
public class CustomWaitHelpers
{
private IWebDriver driver = null;
public CustomWaitHelpers(IWebDriver driver)
{
this.driver = driver;
}
public IAlert WaitUntil_AlertIsPresent(int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.AlertIsPresent());
}
public IWebElement WaitUntil_ElementExists(By by, int timeoutInSeconds = 30)
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementExists(by));
}
public IWebElement WaitUntil_ElementIsVisible(By by, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementIsVisible(by));
}
public bool WaitUntil_ElementSelectionStateToBe(By by, bool selected, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementSelectionStateToBe(by, selected));
}
public bool WaitUntil_ElementSelectionStateToBe(IWebElement element, bool expectedState, int timeoutInSeconds = 90)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementSelectionStateToBe(element, expectedState));
}
public IWebElement WaitUntil_ElementToBeClickable(IWebElement element, int timeoutInSeconds = 90)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementToBeClickable(element));
}
public IWebElement WaitUntil_ElementToBeClickable(By by, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.ElementToBeClickable(by));
}
public bool WaitUntil_InvisibilityOfElementLocated(By by, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.InvisibilityOfElementLocated(by));
}
public bool WaitUntil_InvisibilityOfElementWithText(By by, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.InvisibilityOfElementWithText(by, text));
}
public bool WaitUntil_StalenessOf(IWebElement element, int timeoutInSeconds = 90)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.StalenessOf(element));
}
public bool WaitUntil_TextToBePresentInElement(IWebElement element, string str, int timeoutInSeconds = 90)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.TextToBePresentInElement(element, str));
}
}
}