예제 #1
0
        public void ShouldThrowExceptionWhenSearchContextIsNotWebElement()
        {
            // Given
            var driver = new Mock <IWebDriver>();

            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("window.jQuery")), It.IsAny <object[]>()))
            .Returns(true);
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("function(element)")), It.IsAny <object[]>()))
            .Returns("body > div");
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement> {
                new Mock <IWebElement>().Object
            });
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('body > div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement> {
                new Mock <IWebElement>().Object
            });

            var elementMock = new Mock <ISearchContext>();

            elementMock.As <IWrapsDriver>().SetupGet(x => x.WrappedDriver).Returns(driver.Object);

            var selector = By.JQuerySelector("div");

            // When
            Action action = () => selector.FindElement(elementMock.Object);

            // Then
            Assert.Throws <NotSupportedException>(action);
        }
예제 #2
0
        public void ShouldFindElementWithNestedJQuerySelector()
        {
            // Given
            var driver = new Mock <IWebDriver>();

            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("window.jQuery")), It.IsAny <object[]>()))
            .Returns(true);
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("function(element)")), It.IsAny <object[]>()))
            .Returns("body > div");
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement> {
                new Mock <IWebElement>().Object
            });
            driver.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('body > div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement> {
                new Mock <IWebElement>().Object
            });

            var elementMock = new Mock <ISearchContext>();

            elementMock.As <IWrapsDriver>().SetupGet(x => x.WrappedDriver).Returns(driver.Object);
            elementMock.As <IWebElement>();

            var selector = By.JQuerySelector("div");

            // When
            var result = selector.FindElement(elementMock.Object);

            // Then
            Assert.NotNull(result);
        }
예제 #3
0
        /// <summary>
        /// Check to see of the header of the job category table is correct.
        /// This should be used in the "Job Postings By Category" submenu
        /// </summary>
        /// <param name="category">The category to check for</param>
        /// <returns>True if the title matches the category parameter, false otherwise</returns>
        public bool JobCategoryTableHeaderIsCorrect(string category)
        {
            var tableCategory =
                Driver.FindElement(
                    By.CssSelector("html body form div#MainRight table#maintbl.ScrollTable tbody tr#rowNbr0 td b"));

            return(tableCategory.Text.Contains(category));
        }
예제 #4
0
 /// <summary>
 /// Wait for the Angular loading screen to finish
 /// </summary>
 internal void WaitForPageToLoad()
 {
     _wait.Until(d => d.FindElement(
                     By.CssSelector("div.super-loader"))
                 .GetAttribute("class")
                 .Contains("ng-hide"));
     _wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.CssSelector("div.cover")));
 }
예제 #5
0
 /// <summary>
 /// Signs in with noauth populating some default claims information for a random user, but using a set claimed identifier (so you can ensure its the same user in your application)
 /// </summary>
 /// <param name="driver">the driver which has the page.</param>
 /// <param name="claimedIdentifier">The claimed identifer for the user sent to your application.</param>
 public static void SignInWithNoAuth(this IWebDriver driver, string claimedIdentifier)
 {
     driver.SignInWithNoAuth((d) => {
         d.FindElement(By.JQuerySelector("#claimed-identifier")).Clear();
         d.FindElement(By.JQuerySelector("#claimed-identifier")).SendKeys(claimedIdentifier);
         d.FindElement(By.JQuerySelector("#populate-random-user")).Click();
     });
 }
        public HomePage navigateToHomePage()
        {
            Driver.Navigate().GoToUrl("http://www.google.co.uk");

            Driver.FindElement(By.SizzleSelector(".gb_P:contains('Gmail')")).Click();

            return(new HomePage());
        }
예제 #7
0
        public void ShouldCreateJQuerySelector()
        {
            // Given
            // When
            var selector = By.JQuerySelector("div");

            // Then
            Assert.NotNull(selector);
            Assert.Equal("div", selector.RawSelector);
        }
        /// <summary>
        /// Wait for the finished screen to have the given text
        /// </summary>
        /// <param name="text"></param>
        private void WaitForFinalScreenText(string text)
        {
            _driver.SwitchToFrameById("AppDataPage");
            var div  = By.CssSelector("div#DivHomeMain div.MainToDoItem");
            var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(30));

            wait.Until(ExpectedConditions.ElementIsVisible(div));
            wait.Until(d => d.FindElement(div).Text.Contains(text));
            _driver.SwitchToDefaultFrame();
        }
        public void FindElementThatDoesNotExist()
        {
            // Given
            var selector = By.JQuerySelector("#id-not");

            // When
            Action action = () => this.Browser.FindElement(selector);

            // Then
            Assert.Throws <NoSuchElementException>(action);
        }
예제 #10
0
 private static void SignInWithNoAuth(this IWebDriver driver, Action <IWebDriver> extraStuff)
 {
     if (!driver.Url.Contains(NoAuthBaseUrl))
     {
         throw new Exception($"The current url ({driver.Url}) didn't contain { NoAuthBaseUrl } are you sure you clicked the login button?");
     }
     driver.WaitUntilNotLoading();
     extraStuff(driver);
     driver.WaitUntilNotLoading();
     driver.FindElement(By.JQuerySelector("#login")).Click();
 }
        public void FindElements()
        {
            // Given
            var selector = By.JQuerySelector("div.main");

            // When
            var elements = this.Browser.FindElements(selector);

            // Then
            Assert.Equal(2, elements.Count);
        }
        public void FindElementsThatDoesNotExist()
        {
            // Given
            var selector = By.JQuerySelector("div.mainNot");

            // When
            var elements = this.Browser.FindElements(selector);

            // Then
            Assert.Equal(0, elements.Count);
        }
예제 #13
0
        public void ShouldThrowExceptionWhenCreatingJQuerySelectorWithEmptyValue()
        {
            // Given
            // When
            Action action = () => By.JQuerySelector(string.Empty);

            // Then
            var ex = Assert.Throws <ArgumentException>(action);

            Assert.Equal("selector", ex.ParamName);
        }
예제 #14
0
        public void ShouldThrowExceptionWhenCreatingJQuerySelectorWithWhiteSpaceOnlyVariableValue()
        {
            // Given
            // When
            Action action = () => By.JQuerySelector("div", variable: " ");

            // Then
            var ex = Assert.Throws <ArgumentException>(action);

            Assert.Equal("variable", ex.ParamName);
        }
예제 #15
0
        public void FindInnerElements()
        {
            // Given
            var root     = this.Browser.FindElement(By.SizzleSelector("body"));
            var selector = By.SizzleSelector("h1");

            // When
            var elements = root.FindElements(selector);

            Assert.Equal(1, elements.Count);
        }
        public void FindElement()
        {
            // Given
            var selector = By.JQuerySelector("#id1");

            // When
            var element = this.Browser.FindElement(selector);

            // Then
            Assert.NotNull(element);
        }
        public void FindInnerElement()
        {
            // Given
            var root     = this.Browser.FindElement(By.CssSelector("body"));
            var selector = By.JQuerySelector("div");

            // When
            var element = root.FindElement(selector);

            // Then
            Assert.NotNull(element);
        }
        public void FindInnerElements()
        {
            // Given
            var root     = this.Browser.FindElement(By.JQuerySelector("body"));
            var selector = By.JQuerySelector("div");

            // When
            var elements = root.FindElements(selector);

            // Then
            Assert.Equal(2, elements.Count);
        }
예제 #19
0
        public void ShouldCreateJQuerySelectorWithJQueryVariable()
        {
            // Given
            const string Variable = "test";

            // When
            var selector = By.JQuerySelector("div", variable: Variable);

            // Then
            Assert.NotNull(selector);
            Assert.Equal("div", selector.RawSelector);
            Assert.Equal("test", selector.Variable);
        }
예제 #20
0
        public void ShouldCreateJQuerySelectorWithContext()
        {
            // Given
            var context = By.JQuerySelector("body");

            // When
            var selector = By.JQuerySelector("div", context);

            // Then
            Assert.NotNull(selector);
            Assert.Equal("div", selector.RawSelector);
            Assert.Equal("body", selector.Context.RawSelector);
        }
예제 #21
0
 /// <summary>
 /// Signs in with noauth using a set claimed identifier (so you can ensure its the same user in your application), and a predefined list of claims (which overrides the default data).
 /// </summary>
 /// <param name="driver">the driver which has the page.</param>
 /// <param name="claimedIdentifier">The claimed identifer for the user sent to your application.</param>
 /// <param name="claims">A list of claims to make to your application.</param>
 public static void SignInWithNoAuth(this IWebDriver driver, string claimedIdentifier, List <Claim> claims)
 {
     driver.SignInWithNoAuth((d) => {
         d.FindElement(By.JQuerySelector("#claimed-identifier")).Clear();
         d.FindElement(By.JQuerySelector("#claimed-identifier")).SendKeys(claimedIdentifier);
         for (int i = 0; i < claims.Count(); i++)
         {
             d.FindElement(By.JQuerySelector("#add-claim")).Click();
             d.FindElement(By.JQuerySelector($"[name=\"Claims[{i}].Type\"")).SendKeys(claims[i].Type);
             d.FindElement(By.JQuerySelector($"[name=\"Claims[{i}].Value\"")).SendKeys(claims[i].Value);
         }
     });
 }
        public void ExpectedConditionsSupport()
        {
            // Given
            var condition = ExpectedConditions.ElementIsVisible(By.JQuerySelector("h1"));

            // When
            var wait = new WebDriverWait(this.Browser, TimeSpan.FromSeconds(3));

            wait.Until(condition);

            // Then
            Assert.True(true);
        }
예제 #23
0
        /// <summary>
        /// Get the ID of a Job Posting. The Job ID is only created after the posting has been saved. If it has not been saved, the ID will be "0"
        /// </summary>
        /// <returns>The ID of the Job Posting</returns>
        public void GetJobId()
        {
            try
            {
                BaseWaitForPageToLoad(Driver, 100);

                // wait until the div containing the Job ID is populated
                WebDriverWait wait = new WebDriverWait(Driver, new TimeSpan(0, 0, 5));
                wait.Until(d => !d.FindElement(By.Id("CurrentID")).GetAttribute("value").Equals("0"));

                JobId = JobID.GetAttribute("value");
            }
            catch (Exception e) { throw e; }
        }
예제 #24
0
        /// <summary>
        /// Get the text of the Preview button.
        /// </summary>
        /// <returns>The text of the Preview button</returns>
        public string GetPreviewButtonText()
        {
            try
            {
                BaseWaitForPageToLoad(Driver, 100);

                // wait until the button text changes after saving
                WebDriverWait wait = new WebDriverWait(Driver, new TimeSpan(0, 0, 5));
                bool txt = wait.Until(d => d.FindElement(By.Id("ViewLiveButton")).GetAttribute("value").Contains("ID"));

                return PreviewButton.GetAttribute("value");
            }
            catch (Exception e) { throw e; }
        }
예제 #25
0
        public void ShouldThrowExceptionWhenSearchContextDoesNotWrapDriver()
        {
            // Given
            var elementMock = new Mock <ISearchContext>();

            elementMock.As <IWebElement>();

            var selector = By.JQuerySelector("div");

            // When
            Action action = () => selector.FindElement(elementMock.Object);

            // Then
            Assert.Throws <NotSupportedException>(action);
        }
예제 #26
0
        public void ShouldThrowExceptionWhenElementIsNotFoundWithJQuerySelector()
        {
            // Given
            var driverMock = new Mock <IWebDriver>();

            driverMock.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("window.jQuery")), It.IsAny <object[]>()))
            .Returns(true);
            driverMock.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement>());
            var selector = By.JQuerySelector("div");

            // When
            Action action = () => selector.FindElement(driverMock.Object);

            // Then
            Assert.Throws <NoSuchElementException>(action);
        }
예제 #27
0
        public void ShouldReturnEmptyResultWhenNoElementsAreFoundWithJQuerySelector()
        {
            // Given
            var driverMock = new Mock <IWebDriver>();

            driverMock.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("window.jQuery")), It.IsAny <object[]>()))
            .Returns(true);
            driverMock.As <IJavaScriptExecutor>()
            .Setup(x => x.ExecuteScript(It.Is <string>(s => s.Contains("jQuery('div')")), It.IsAny <object[]>()))
            .Returns(new List <IWebElement>());
            var selector = By.JQuerySelector("div");

            // When
            var result = selector.FindElements(driverMock.Object);

            // Then
            Assert.NotNull(result);
            Assert.Equal(0, result.Count);
        }
        /// <summary>
        /// Get the applicant number
        /// </summary>
        /// <returns></returns>
        public int GetAppNo()
        {
            var appNoElement = _driver.FindElement(By.Name("appno"));

            return(int.Parse(appNoElement.GetAttribute("value")));
        }
예제 #29
0
 /// <summary>
 /// Signs in with noauth populating some default claims information for a random user.
 /// </summary>
 /// <param name="driver">the driver which has the page.</param>
 public static void SignInWithNoAuth(this IWebDriver driver)
 {
     driver.SignInWithNoAuth((d) => {
         d.FindElement(By.JQuerySelector("#populate-random-user")).Click();
     });
 }
예제 #30
0
 private static bool IsLoading(this IWebDriver driver)
 {
     return(driver.FindElements(By.JQuerySelector(".loading")).Count > 0);
 }