using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
using ExpectedConditions = SeleniumExtras.WaitHelpers.ExpectedConditions;
namespace SeleniumBase.PageObjects
{
public static class WebDriverExtensions
{
public static void ClickWithJavaScript(this IWebDriver driver, IWebElement element)
{
IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
executor.ExecuteScript("arguments[0].click();", element);
}
public static void ClickWithJavaScript(this IWebDriver driver, By locator)
{
IJavaScriptExecutor executor = (IJavaScriptExecutor)driver;
executor.ExecuteScript("arguments[0].click();", driver.FindElement(locator));
}
public static SelectElement FindSelectElement(this IWebDriver driver, By by)
{
return new SelectElement(driver.FindElement(by));
}
public static IWebDriver GetDefaultContent(this IWebDriver driver)
{
driver.SwitchTo().DefaultContent();
return driver;
}
public static IWebDriver WaitUntil_FrameToBeAvailableAndSwitchToIt(this IWebDriver driver, string frameNameOrId, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(frameNameOrId));
}
public static IWebDriver WaitUntil_FrameToBeAvailableAndSwitchToIt(this IWebDriver driver, By locator, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(locator));
}
public static bool WaitUntil_AlertState(this IWebDriver driver, bool expectedState, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
return wait.Until(ExpectedConditions.AlertState(expectedState));
}
public static IWebDriver WaitUntil_TitleContains(this IWebDriver driver, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(ExpectedConditions.TitleContains(text));
return driver;
}
public static IWebDriver WaitUntil_TitleIs(this IWebDriver driver, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(ExpectedConditions.TitleIs(text));
return driver;
}
public static IWebDriver WaitUntil_UrlContains(this IWebDriver driver, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(ExpectedConditions.UrlContains(text));
return driver;
}
public static IWebDriver WaitUntil_UrlMatches(this IWebDriver driver, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(ExpectedConditions.UrlMatches(text));
return driver;
}
public static IWebDriver WaitUntil_UrlChangesFrom(this IWebDriver driver, string OldURL, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(UrlChanges(OldURL));
return driver;
}
public static IWebDriver WaitUntil_UrlToBe(this IWebDriver driver, string text, int timeoutInSeconds = 30)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(ExpectedConditions.UrlToBe(text));
return driver;
}
}
}