internal override object getTarget(IInvocation invocation) { if (cached != null) { return(cached); } Type genericParameter = invocation.Method.DeclaringType.GetGenericArguments()[0]; IList result = GenericsUtility.CraeteInstanceOfSomeGeneric(typeof(List <>), genericParameter, new Type[] { }, new object[] { }) as IList; ITimeouts timeOuts = WebDriverUnpackUtility.UnpackWebdriver(locator.SearchContext).Manage().Timeouts(); try { timeOuts.ImplicitlyWait(zeroTimeSpan); waitingForElementList.Timeout = waitingTimeSpan.WaitingDuration; ReadOnlyCollection <IWebElement> found = waitingForElementList.Until(ReturnWaitingFunction(locator, bys)); result = convert(found, genericParameter); } catch (WebDriverTimeoutException ignored) {} finally { timeOuts.ImplicitlyWait(waitingTimeSpan.WaitingDuration); } if (shouldCache && cached == null) { cached = result; } return(result); }
internal override object getTarget(IInvocation ignored) { if (cached != null) { return(cached); } ITimeouts timeOuts = WebDriverUnpackUtility.UnpackWebdriver(locator.SearchContext).Manage().Timeouts(); try { timeOuts.ImplicitWait = zeroTimeSpan; waitingForElementList.Timeout = waitingTimeSpan.WaitingDuration; var result = waitingForElementList.Until(ReturnWaitingFunction(locator, bys))[0]; if (shouldCache && cached == null) { cached = result; } return(result); } catch (WebDriverTimeoutException e) { string bysString = ""; foreach (var by in bys) { bysString = bysString + by.ToString() + " "; } throw new NoSuchElementException("Couldn't locate an element by these strategies: " + bysString, e); } finally { timeOuts.ImplicitWait = waitingTimeSpan.WaitingDuration; } }
public void IntialiseDriverAndLaunchUrl() { webDriver = new FirefoxDriver(); ngWebDriver = new NgWebDriver(webDriver); scriptLoadTime = webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(5)); ngWebDriver.Navigate().GoToUrl(baseUrl); }
public TimeoutsInstance(ObjectInstance prototype, ITimeouts timeouts) : this(prototype) { if (timeouts == null) { throw new ArgumentNullException("timeouts"); } m_timeouts = timeouts; }
/// <summary> /// Sets the browser timeout to 1 minute when nothing is mentioned. /// </summary> /// <param name="span">Time out to wait for an element or operation</param> private void SetBrowserTimeOut(TimeSpan?span = null) { IOptions options = _webDriver?.Manage(); ITimeouts timeouts = options?.Timeouts(); if (timeouts != null) { TimeSpan waitAMinute = span ?? new TimeSpan(0, 1, 0); timeouts.ImplicitlyWait(waitAMinute); } }
public void SetupTest() { //baseURL = "http://localhost:53013/"; verificationErrors = new StringBuilder(); d = new ChromeDriver(); //d.Manage().Window.Maximize(); opt = d.Manage(); timeouts = opt.Timeouts(); timeouts.ImplicitWait = TimeSpan.FromSeconds(10); wait = new WebDriverWait(d, TimeSpan.FromSeconds(10)); }
public static IWebDriver SetupTimeout(this IWebDriver webDriver, double ScriptExecuteTimeoutSeconds, double PageLoadTimeoutSeconds) { Contract.Assert(webDriver != null, "The web driver cannot be null."); Contract.Assert(ScriptExecuteTimeoutSeconds >= 0, "The script execute timeout is invalid."); Contract.Assert(PageLoadTimeoutSeconds >= 0, "The page load timeout is invalid."); ITimeouts timeouts = webDriver.Manage().Timeouts(); if (timeouts != null) { timeouts.SetScriptTimeout(TimeSpan.FromSeconds(ScriptExecuteTimeoutSeconds)); timeouts.SetPageLoadTimeout(TimeSpan.FromSeconds(PageLoadTimeoutSeconds)); } return(webDriver); }
/// <summary> /// Initializes a new instance of the EventFiringTimeouts class /// </summary> /// <param name="options">The <see cref="IOptions"/> object to wrap.</param> public EventFiringTimeouts(IOptions options) { this.wrappedTimeouts = options.Timeouts(); }
public static ITimeouts ToWrapper(this ITimeouts timeouts) { return(new TimeoutsWrapper(timeouts)); }
public SyncTimeouts(ITimeouts timeouts) { this.timeouts = timeouts; }
private IWebDriver CreateWebDriver() { var webDriverOptions = new ChromeOptions { PageLoadStrategy = PageLoadStrategy.Normal, AcceptInsecureCertificates = true, }; const int windowWidth = 1680, windowHeight = 1050; if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("MOZ_HEADLESS"))) { TestContext.WriteLine("Going to run Chrome headless"); webDriverOptions.AddArgument("headless"); TestContext.WriteLine($"Going to run Chrome at {windowWidth}x{windowHeight}"); webDriverOptions.AddArgument($"window-size={windowWidth},{windowHeight}"); webDriverOptions.AddArgument("shm-size=1gb"); } var webDriver = new ChromeDriver(webDriverOptions); var window = webDriver.Manage().Window; try { TestContext.WriteLine($"Setting window size in WebDriver at {windowWidth}x{windowHeight}"); window.Size = new Size(windowWidth, windowHeight); } catch (Exception ex) { TestContext.WriteLine($"Setting driver window size not supported: {ex}"); } // Overridable timeout for tests for known CI failures if (!Int32.TryParse(Environment.GetEnvironmentVariable("RETURN_TEST_WAIT_TIME"), out int waitTime)) { waitTime = 10; } TestContext.WriteLine($"Configuration of WebDriver using wait time: {waitTime}s"); ITimeouts timeouts = webDriver.Manage().Timeouts(); timeouts.ImplicitWait = TimeSpan.FromSeconds(waitTime); timeouts.PageLoad = TimeSpan.FromSeconds(waitTime); void WrapLoggerAction <TArgs>(TArgs args, Action act, string screenshotName = null) { try { if (screenshotName != null) { webDriver.TryCreateScreenshot($"action-{screenshotName}"); } act(); } catch (Exception ex) { TestContext.WriteLine($"Cannot log action {args.ToString()}: [{ex.GetType().FullName}] {ex.Message}"); } } var wrapper = new EventFiringWebDriver(webDriver); wrapper.ElementClicked += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: click - {args.Element.TagName}"), "element-clicked"); wrapper.ElementClicking += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: clicking - {args.Element.TagName}"), "element-clicking"); wrapper.ExceptionThrown += (_, args) => { TestContext.WriteLine($"WebDriver: exception - {args.ThrownException}"); webDriver.TryCreateScreenshot("exception-" + args.ThrownException.GetType().Name); webDriver.TryLogContext(); }; wrapper.FindingElement += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: finding element - {args.FindMethod}")); wrapper.FindElementCompleted += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: finding element completed - {args.FindMethod}")); wrapper.Navigating += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: navigating - {args.Url}"), "navigate"); wrapper.Navigated += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: navigated - {args.Url}"), "navigate"); wrapper.ElementValueChanging += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: element value changing - {args.Element.TagName} [{args.Element.GetProperty("outerHTML")}]")); wrapper.ElementValueChanged += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: element value changed - {args.Element.TagName} [{args.Element.GetProperty("outerHTML")}]")); return(wrapper); }
public TimeoutsWrapper(ITimeouts timeouts) { _timeouts = timeouts; }
private IWebDriver CreateWebDriver() { var webDriverOptions = new ChromeOptions { PageLoadStrategy = PageLoadStrategy.Normal, AcceptInsecureCertificates = true, }; if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("MOZ_HEADLESS"))) { TestContext.WriteLine("Going to run Chrome headless"); webDriverOptions.AddArguments("--headless"); } var webDriver = new ChromeDriver(webDriverOptions); var window = webDriver.Manage().Window; try { window.Size = new Size(1920, 1080); } catch (Exception ex) { TestContext.WriteLine($"Setting driver window size not supported: {ex}"); } ITimeouts timeouts = webDriver.Manage().Timeouts(); timeouts.ImplicitWait = TimeSpan.FromSeconds(10); timeouts.PageLoad = TimeSpan.FromSeconds(10); void WrapLoggerAction <TArgs>(TArgs args, Action act, string screenshotName = null) { try { if (screenshotName != null) { webDriver.TryCreateScreenshot($"action-{screenshotName}"); } act(); } catch (Exception ex) { TestContext.WriteLine($"Cannot log action {args.ToString()}: [{ex.GetType().FullName}] {ex.Message}"); } } var wrapper = new EventFiringWebDriver(webDriver); wrapper.ElementClicked += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: click - {args.Element.TagName}"), "element-clicked"); wrapper.ElementClicking += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: clicking - {args.Element.TagName}"), "element-clicking"); wrapper.ExceptionThrown += (_, args) => { TestContext.WriteLine($"WebDriver: exception - {args.ThrownException}"); webDriver.TryCreateScreenshot("exception-" + args.ThrownException.GetType().Name); webDriver.TryLogContext(); }; wrapper.FindingElement += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: finding element - {args.FindMethod}")); wrapper.FindElementCompleted += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: finding element completed - {args.FindMethod}")); wrapper.Navigating += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: navigating - {args.Url}"), "navigate"); wrapper.Navigated += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: navigated - {args.Url}"), "navigate"); wrapper.ElementValueChanging += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: element value changing - {args.Element.TagName} [{args.Element.GetProperty("outerHTML")}]")); wrapper.ElementValueChanged += (_, args) => WrapLoggerAction(args, () => TestContext.WriteLine($"WebDriver: element value changed - {args.Element.TagName} [{args.Element.GetProperty("outerHTML")}]")); return(wrapper); }
public static ITimeouts SetRetryTimeout(this ITimeouts timeouts, TimeSpan timeToWait) { RetrySettings.Timeout = timeToWait; return(timeouts); }
public static ITimeouts SetRetryTimeout(this ITimeouts timeouts, TimeSpan timeToWait, TimeSpan retryInterval) { RetrySettings.Timeout = timeToWait; RetrySettings.Interval = retryInterval; return(timeouts); }