using System; using System.Threading; using OpenQA.Selenium; using OpenQA.Selenium.Remote; using OpenQA.Selenium.Support.UI; namespace NzbDrone.Automation.Test.PageModel { public class PageBase { private readonly RemoteWebDriver _driver; public PageBase(RemoteWebDriver driver) { _driver = driver; driver.Manage().Window.Maximize(); } public IWebElement FindByClass(string className, int timeout = 5) { return Find(By.ClassName(className), timeout); } public IWebElement Find(By by, int timeout = 5) { var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(timeout)); return wait.Until(d => d.FindElement(by)); } public void WaitForNoSpinner(int timeout = 20) { //give the spinner some time to show up. Thread.Sleep(100); var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(timeout)); wait.Until(d => { try { IWebElement element = d.FindElement(By.Id("followingBalls")); return !element.Displayed; } catch (NoSuchElementException) { return true; } }); } public IWebElement SeriesNavIcon { get { return FindByClass("x-series-nav"); } } public IWebElement CalendarNavIcon { get { return FindByClass("x-calendar-nav"); } } public IWebElement HistoryNavIcon { get { return FindByClass("x-history-nav"); } } public IWebElement WantedNavIcon { get { return FindByClass("x-wanted-nav"); } } public IWebElement SettingNavIcon { get { return FindByClass("x-settings-nav"); } } public IWebElement SystemNavIcon { get { return FindByClass("x-system-nav"); } } } }