예제 #1
0
        public void SetTimeoutsGetWaitDriver()
        {
            IWebDriver driver    = null;
            IWebDriver newDriver = null;

            try
            {
                driver    = WebDriverFactory.GetDefaultBrowser();
                newDriver = WebDriverFactory.GetDefaultBrowser();
                SeleniumUtilities.SetTimeouts(driver);
                WebDriverWait wait = SeleniumConfig.GetWaitDriver(newDriver);
                Assert.AreEqual(wait.Timeout.TotalMilliseconds.ToString(), Config.GetValueForSection("SeleniumMaqs", "BrowserTimeout", "0"));
            }
            finally
            {
                try
                {
                    driver?.KillDriver();
                }
                finally
                {
                    newDriver?.KillDriver();
                }
            }
        }
예제 #2
0
        protected override IWebDriver GetBrowser()
        {
            if (string.Equals(Config.GetValueForSection(ConfigSection.SeleniumMaqs, "RunOnSauceLabs"), "YES", StringComparison.OrdinalIgnoreCase))
            {
                var name    = this.TestContext.FullyQualifiedTestClassName + "." + this.TestContext.TestName;
                var options = SeleniumConfig.GetRemoteCapabilitiesAsObjects();

                var sauceOptions = options["sauce:options"] as Dictionary <string, object>;
                sauceOptions.Add("screenResolution", "1280x1024");
                sauceOptions.Add("build", string.IsNullOrEmpty(Environment.GetEnvironmentVariable("SAUCE_BUILD_NAME")) ? BuildDate : Environment.GetEnvironmentVariable("SAUCE_BUILD_NAME"));
                sauceOptions.Add("name", name);

                var browserOptions = new ChromeOptions
                {
                    UseSpecCompliantProtocol = true,
                    PlatformName             = "Windows 10",
                    BrowserVersion           = "latest"
                };

                browserOptions.SetDriverOptions(options);

                var remoteCapabilities = browserOptions.ToCapabilities();

                return(new RemoteWebDriver(new Uri(Config.GetValueForSection(ConfigSection.SeleniumMaqs, "HubUrl")), remoteCapabilities, SeleniumConfig.GetCommandTimeout()));
            }

            return(base.GetBrowser());
        }
예제 #3
0
        public void CommandTimeoutNotANumberException()
        {
            string commandTimeout = Config.GetValueForSection(ConfigSection.SeleniumMaqs, "SeleniumCommandTimeout");

            Config.AddTestSettingValues(
                new Dictionary <string, string>
            {
                { "SeleniumCommandTimeout", "TestString" }
            },
                "SeleniumMaqs");

            try
            {
                var commandTimeoutFromMethod = SeleniumConfig.GetCommandTimeout();
                Assert.Fail($"We should throw an argument exception before we get to this assert.  Value was {commandTimeoutFromMethod}");
            }
            finally
            {
                Config.AddTestSettingValues(
                    new Dictionary <string, string>
                {
                    { "SeleniumCommandTimeout", commandTimeout }
                },
                    "SeleniumMaqs");
            }
        }
 public PageObject(SeleniumConfig seleniumConfig, IWebDriver driver, ILogging logging, SibApiConfig sibApiConfig)
 {
     _seleniumConfig = seleniumConfig;
     _driver         = driver;
     _logging        = logging;
     _sibApiConfig   = sibApiConfig;
 }
예제 #5
0
        public void SetTimeoutsGetWaitDriver()
        {
            SeleniumConfig.SetTimeouts(SeleniumConfig.Browser());
            WebDriverWait wait = SeleniumConfig.GetWaitDriver(SeleniumConfig.Browser());

            Assert.AreEqual(wait.Timeout.TotalMilliseconds.ToString(), Config.GetValue("Timeout", "0"));
        }
예제 #6
0
 public void BrowserTypeError()
 {
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetBrowserType("PHANTOMJS"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetBrowserType("PHANTOM JS"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetBrowserType("PHANTOM"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetBrowserType("OTHER"));
 }
예제 #7
0
 public void RemoteBrowserTypeError()
 {
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetRemoteBrowserType("remote"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetRemoteBrowserType("HEADLESSCHROME"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetRemoteBrowserType("PHANTOM"));
     Assert.ThrowsException <ArgumentException>(() => SeleniumConfig.GetRemoteBrowserType("OTHER"));
 }
        public void LazyElementExistsNow()
        {
            LazyElement slowLoad = new LazyElement(this.TestObject, By.CssSelector("#AsyncContent[style*='block']"));

            WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase() + "Automation/AsyncPage");

            Assert.IsFalse(slowLoad.ExistsNow, "Element should not exist yet");
        }
예제 #9
0
        /// <summary>
        /// Reset the WebDriverWait to the default
        /// </summary>
        /// <param name="searchContext">Web driver or element</param>
        /// <example>
        /// <code source = "../SeleniumUnitTesting/SeleniumUnitTest.cs" region="ResetWaitDriver" lang="C#" />
        /// </example>
        public static void ResetWaitDriver(this ISearchContext searchContext)
        {
            // Make sure we have the base driver and not the event firing wrapper
            IWebDriver unwrappedDriver = GetLowLevelDriver(searchContext);

            WebDriverWait waiter = SeleniumConfig.GetWaitDriver(unwrappedDriver);

            waitCollection.AddOrUpdate(unwrappedDriver, waiter, (oldkey, oldvalue) => waiter);
        }
예제 #10
0
        public void LazyElementSubmit()
        {
            WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase() + "Employees");
            WebDriver.Wait().ForClickableElement(By.CssSelector("A[href^='/Employees/Edit/']")).Click();
            WebDriver.Wait().ForPageLoad();

            this.SubmitButton.Submit();
            Assert.IsTrue(WebDriver.Wait().UntilAbsentElement(By.CssSelector("#[type='submit']")), "Submit did not go away");
        }
예제 #11
0
        public void GetRemotePlatform()
        {
            #region RemotePlatform

            string platform = SeleniumConfig.GetRemotePlatform();

            #endregion RemotePlatform

            Assert.AreEqual(platform, string.Empty);
        }
예제 #12
0
        public void GetWebsiteBase()
        {
            #region GetWebsiteBase

            string website = SeleniumConfig.GetWebSiteBase();

            #endregion GetWebsiteBase

            Assert.IsTrue(website.Equals("http://magenicautomation.azurewebsites.net/", StringComparison.InvariantCultureIgnoreCase));
        }
예제 #13
0
        public void GetDriverHintPath()
        {
            #region GetDriverHintPath

            string path = SeleniumConfig.GetDriverHintPath();

            #endregion GetDriverHintPath

            Assert.AreEqual(path, Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
        }
예제 #14
0
        public void GetRemoteBrowserName()
        {
            #region GetRemoteName

            string browser = SeleniumConfig.GetRemoteBrowserName();

            #endregion GetRemoteName

            Assert.AreEqual("Chrome", browser);
        }
예제 #15
0
        public void GetCommandTimeout()
        {
            #region GetCommandTimeout

            TimeSpan initTimeout = SeleniumConfig.GetCommandTimeout();

            #endregion GetCommandTimeout

            Assert.AreEqual(TimeSpan.FromSeconds(61).Ticks, initTimeout.Ticks);
        }
예제 #16
0
        public void GetBrowserName()
        {
            #region GetBrowserName

            string driverName = SeleniumConfig.GetBrowserName();

            #endregion GetBrowserName

            Assert.IsTrue(driverName.Equals("HeadlessChrome", StringComparison.InvariantCultureIgnoreCase));
        }
예제 #17
0
        public void GetRemoteBrowserVersion()
        {
            #region RemoteVersion

            string version = SeleniumConfig.GetRemoteBrowserVersion();

            #endregion RemoteVersion

            Assert.AreEqual(version, string.Empty);
        }
예제 #18
0
        public void LazyElementFindElementsRespectAction()
        {
            IWebElement firstElement = this.DivRoot.FindElements(this.DisabledItem.By)[0];

            this.WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase());
            this.WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase() + "Automation");

            this.WebDriver.SetWaitDriver(new OpenQA.Selenium.Support.UI.WebDriverWait(this.WebDriver, TimeSpan.FromSeconds(1)));
            firstElement.Click();
        }
예제 #19
0
 public void RemoteBrowserTypeMatch()
 {
     Assert.AreEqual(RemoteBrowserType.IE, SeleniumConfig.GetRemoteBrowserType("INTERNET EXPLORER"));
     Assert.AreEqual(RemoteBrowserType.IE, SeleniumConfig.GetRemoteBrowserType("INTERNETExPLOREr"));
     Assert.AreEqual(RemoteBrowserType.IE, SeleniumConfig.GetRemoteBrowserType("ie"));
     Assert.AreEqual(RemoteBrowserType.Firefox, SeleniumConfig.GetRemoteBrowserType("Firefox"));
     Assert.AreEqual(RemoteBrowserType.Chrome, SeleniumConfig.GetRemoteBrowserType("chrome"));
     Assert.AreEqual(RemoteBrowserType.Safari, SeleniumConfig.GetRemoteBrowserType("SAFARI"));
     Assert.AreEqual(RemoteBrowserType.Edge, SeleniumConfig.GetRemoteBrowserType("edge"));
 }
예제 #20
0
        public void LazyElementFindElementsStackedWithStale()
        {
            LazyElement lazyRoot        = new LazyElement(this.TestObject, By.CssSelector("#ItemsToAutomate"));
            IWebElement secondTable     = lazyRoot.FindElements(By.CssSelector("TABLE"))[1];
            IWebElement lastTableHeader = ((LazyElement)secondTable).FindElements(By.CssSelector("THEAD TH"))[4];

            this.WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase());
            this.WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase() + "Automation");

            Assert.AreEqual("Color", lastTableHeader.Text);
        }
예제 #21
0
        public void GetWaitDriver()
        {
            #region WaitDriver

            WebDriverWait wait = SeleniumConfig.GetWaitDriver(SeleniumConfig.Browser());

            #endregion WaitDriver

            Assert.AreEqual(wait.Timeout.Seconds, 10);
            Assert.AreEqual(wait.PollingInterval.Seconds, 1);
        }
예제 #22
0
        public void GetWaitDriverResetWaitDriver()
        {
            WebDriverWait defaultWaitDriver = SeleniumConfig.GetWaitDriver(this.WebDriver); // default waitdriver

            this.WebDriver.ResetWaitDriver();
            WebDriverWait resetWaitDriver = this.WebDriver.GetWaitDriver(); // webdrivers default webdriver

            Assert.AreEqual(defaultWaitDriver.Timeout, resetWaitDriver.Timeout);
            Assert.AreEqual(defaultWaitDriver.Message, resetWaitDriver.Message);
            Assert.AreEqual(defaultWaitDriver.PollingInterval, resetWaitDriver.PollingInterval);
        }
예제 #23
0
        /// <summary>
        /// Override the web driver we user for these tests
        /// </summary>
        /// <returns>The web driver we want to use - Web driver override</returns>
        protected override IWebDriver GetBrowser()
        {
            var firefoxOptions = WebDriverFactory.GetDefaultFirefoxOptions();

            firefoxOptions.AddArgument("--headless");
            IWebDriver driver = WebDriverFactory.GetFirefoxDriver(SeleniumConfig.GetCommandTimeout(), firefoxOptions);

            driver.Manage().Window.Size = new Size(701, 199);

            return(driver);
        }
예제 #24
0
        public void TryScreenshotImageFormat()
        {
            WebDriver.Navigate().GoToUrl(TestSiteUrl);
            WebDriver.Wait().ForPageLoad();
            SeleniumUtilities.CaptureScreenshot(this.WebDriver, this.TestObject);
            string filePath = Path.ChangeExtension(((FileLogger)this.Log).FilePath, SeleniumConfig.GetImageFormat());

            Assert.IsTrue(File.Exists(filePath), "Fail to find screenshot");
            Assert.AreEqual(Path.GetExtension(filePath), "." + SeleniumConfig.GetImageFormat(), "The screenshot format was not in correct Format");
            File.Delete(filePath);
        }
예제 #25
0
 public void BrowserTypeMatch()
 {
     Assert.AreEqual(BrowserType.IE, SeleniumConfig.GetBrowserType("INTERNET EXPLORER"));
     Assert.AreEqual(BrowserType.IE, SeleniumConfig.GetBrowserType("INTERNETExPLOREr"));
     Assert.AreEqual(BrowserType.IE, SeleniumConfig.GetBrowserType("ie"));
     Assert.AreEqual(BrowserType.Firefox, SeleniumConfig.GetBrowserType("Firefox"));
     Assert.AreEqual(BrowserType.Chrome, SeleniumConfig.GetBrowserType("chrome"));
     Assert.AreEqual(BrowserType.HeadlessChrome, SeleniumConfig.GetBrowserType("HEADLESSCHROME"));
     Assert.AreEqual(BrowserType.Edge, SeleniumConfig.GetBrowserType("eDGE"));
     Assert.AreEqual(BrowserType.Remote, SeleniumConfig.GetBrowserType("remote"));
 }
예제 #26
0
        public void GetBrowserWithString()
        {
            #region GetBrowserWithString

            IWebDriver driver = SeleniumConfig.Browser("phantomjs");

            #endregion GetBrowserWithString

            Assert.IsNotNull(driver);
            driver.Close();
            driver.Dispose();
        }
예제 #27
0
        public void GetBrowser()
        {
            #region GetBrowser

            IWebDriver driver = SeleniumConfig.Browser();

            #endregion GetBrowser

            Assert.IsNotNull(driver);
            driver.Close();
            driver.Dispose();
        }
예제 #28
0
        public void SeparateInteractions()
        {
            SeleniumDriverManager newDriver = new SeleniumDriverManager(() => WebDriverFactory.GetBrowserWithDefaultConfiguration(BrowserType.HeadlessChrome), this.TestObject);

            newDriver.GetWebDriver().Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase());

            this.ManagerStore.Add("test", newDriver);

            this.TestObject.WebDriver.Navigate().GoToUrl(SeleniumConfig.GetWebSiteBase() + "/Automation");

            Assert.AreNotEqual(this.TestObject.WebDriver.Url, this.ManagerStore.GetManager <SeleniumDriverManager>("test").GetWebDriver().Url);
        }
예제 #29
0
        public void WebDriverUsesProxy()
        {
            DriverOptions options = WebDriverFactory.GetDefaultHeadlessChromeOptions();

            options.SetProxySettings(Config.GetValueForSection(ConfigSection.SeleniumMaqs, "ProxyAddress"));
            this.WebDriver = WebDriverFactory.GetChromeDriver(TimeSpan.FromMilliseconds(61000), (ChromeOptions)options);

            string url = Path.Combine(SeleniumConfig.GetWebSiteBase().Replace("https://", "http://"), "Employees");

            this.WebDriver.Navigate().GoToUrl(url);

            bool proxyUsed = RequestsHistory.Values.Any(r => r.RequestUri.ToString().Contains("magenicautomation.azurewebsites.net/Employees"));

            Assert.IsTrue(proxyUsed, "Failed to assert the proxy was used by the web driver.");
        }
예제 #30
0
        public void GetWaitDriver()
        {
            IWebDriver driver = WebDriverFactory.GetDefaultBrowser();

            try
            {
                WebDriverWait wait = SeleniumConfig.GetWaitDriver(driver);
                Assert.AreEqual(20, wait.Timeout.Seconds);
                Assert.AreEqual(1, wait.PollingInterval.Seconds);
            }
            finally
            {
                driver?.KillDriver();
            }
        }