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;
            }
        }
Ejemplo n.º 3
0
 public void IntialiseDriverAndLaunchUrl()
 {
     webDriver      = new FirefoxDriver();
     ngWebDriver    = new NgWebDriver(webDriver);
     scriptLoadTime = webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(5));
     ngWebDriver.Navigate().GoToUrl(baseUrl);
 }
Ejemplo n.º 4
0
        public TimeoutsInstance(ObjectInstance prototype, ITimeouts timeouts)
            : this(prototype)
        {
            if (timeouts == null)
            {
                throw new ArgumentNullException("timeouts");
            }

            m_timeouts = timeouts;
        }
Ejemplo n.º 5
0
        /// <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);
            }
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 /// <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();
 }
Ejemplo n.º 9
0
 public static ITimeouts ToWrapper(this ITimeouts timeouts)
 {
     return(new TimeoutsWrapper(timeouts));
 }
Ejemplo n.º 10
0
 public SyncTimeouts(ITimeouts timeouts)
 {
     this.timeouts = timeouts;
 }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
 public TimeoutsWrapper(ITimeouts timeouts)
 {
     _timeouts = timeouts;
 }
Ejemplo n.º 13
0
 /// <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();
 }
Ejemplo n.º 14
0
        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);
 }