public void InitElements_Indexer(PageObjectWithDecoratedIndexer pageObjectWithDecoratedIndexer,
                                  PageObjectFactory pageObjectFactory)
 {
     new Action(() => pageObjectFactory.InitElements(pageObjectWithDecoratedIndexer)).Should()
     .Throw <DecorationException>()
     .WithMessage($"Unable to decorate {pageObjectWithDecoratedIndexer.GetType().Name}.Item, it cannot be written to");
 }
Exemple #2
0
        public T GetInstance <T>() where T : PageBase
        {
            IPageObjectFactory objectFactory = new PageObjectFactory();
            T page = objectFactory.Create <T>(_driver);

            return(page);
        }
Exemple #3
0
        public void ShouldBeAbleToCreatePageObjectWithBasicPageElement()
        {
            var basicPageObject = PageObjectFactory.GetPageObjectByType <BasicPageObject>(GetWebDriverMock());

            Assert.AreEqual(basicPageObject.GetType(), typeof(BasicPageObject));
            Assert.AreEqual(basicPageObject.Element.GetType(), typeof(BasicPageElement));
        }
Exemple #4
0
        public void ShouldBeAbleToCreatePageObjectWithIncludedPartialPageObject()
        {
            var parentPageObject = PageObjectFactory.GetPageObjectByType <ParentPageObject>(GetWebDriverMock());

            Assert.AreEqual(parentPageObject.GetType(), typeof(ParentPageObject));
            Assert.AreEqual(parentPageObject.Element.GetType(), typeof(BasicPageElement));
            Assert.AreEqual(parentPageObject.ChildPageObject.Element.GetType(), typeof(BasicPageElement));
        }
        /// <summary>
        ///     Clicks on a wrapped WebElement and creates new page object instance of given type.
        /// </summary>
        /// <typeparam name="TPage">
        ///     The type of page object being created.
        /// </typeparam>
        /// <returns>
        ///     New page object instance.
        /// </returns>
        public TPage Open <TPage>()
        {
            IWebDriver wd = WrappedDriver;

            Click();

            return(PageObjectFactory.Create <TPage>(wd));
        }
Exemple #6
0
        public CategoryPage GoToRandomCategory()
        {
            var size   = productCategories.Count;
            var random = new Random().Next(0, size);

            HoverOverElement(productCategoryButton, nameof(productCategoryButton))
            .ClickElement(productCategories.ElementAt(random), nameof(productCategories));
            return(PageObjectFactory.CreateCategoryPage(driver));
        }
        public void InitElements_DoesNotDecorateUndecoratedMembers([Frozen] Mock <IPageObjectMemberDecorator> memberDecoratorMock,
                                                                   PageObjectFactory pageObjectFactory)
        {
            pageObjectFactory.InitElements(new PageObjectWithUndecoratedMembers());

            memberDecoratorMock.Verify(x => x.Decorate(It.IsAny <Type>(),
                                                       It.IsAny <IEnumerable <By> >(),
                                                       It.IsAny <IElementLocator>()), Times.Never());
        }
        /// <summary>
        ///     Clicks on wrapped WebElement, waits until new window is opened and switches to it.
        /// </summary>
        /// <typeparam name="TPage">
        ///     Type of page object being created.
        /// </typeparam>
        /// <returns>
        ///     New page object instance.
        /// </returns>
        public TPage OpenInNewWindow <TPage>()
        {
            IWebDriver wd = WrappedDriver;

            wd.WaitUntilNewWindowOpened(Click);
            wd.SwitchToLastOpenedWindow();

            return(PageObjectFactory.Create <TPage>(wd));
        }
        /// <summary>
        /// Opens the drop down and returns the option.
        /// </summary>
        /// <param name="optionText">The option.</param>
        /// <param name="stringComparison">The string comparison.</param>
        /// <returns></returns>
        /// <exception cref="NoSuchElementException"></exception>
        public virtual MenuItemComponent SelectOption(string optionText,
                                                      StringComparison stringComparison = StringComparison.Ordinal)
        {
            // This isn't ideal but since the dropdown menu items are
            // generated on the first time the parent menu item is clicked,
            // click the parent element, wait 500 ms (should be enough time for
            // the dropdown to be generated), and move the mouse below the
            // parent element to locate the dropdown container.
            WrappedElement.Click();
            Thread.Sleep(500);

            // Determine where the float-menu will appear. Usually it's either
            // directly below or to the right.
            var(X, Y) = GetDirectionFloatMenuWillOpen();

            // Move below the WrappedElement.
            WrappedDriver.CreateActions()
            .MoveToElement(
                toElement: WrappedElement,
                offsetX: X,
                offsetY: Y,
                offsetOrigin: MoveToElementOffsetOrigin.Center)
            .Perform();

            // Get the container element under the mouse.
            var focusedElement = WrappedDriver
                                 .GetHoveredElements(allMenuDropDownsSelector)
                                 .First();

            var menuItemEl = focusedElement.FindElements(dropDownItemsSelector)
                             .FirstOrDefault(el =>
            {
                var textEl = el.FindElements(textSelector)
                             .FirstOrDefault();

                return(textEl == null
                        ? false
                        : String.Equals(
                           textEl.TextHelper().InnerText,
                           optionText,
                           stringComparison));
            });

            if (menuItemEl == null)
            {
                throw new NoSuchElementException();
            }

            var selector = ByElement.FromElement(menuItemEl);

            return(PageObjectFactory.PrepareComponent(
                       new MenuItemComponent(
                           selector,
                           PageObjectFactory,
                           WrappedDriver)));
        }
Exemple #10
0
        public void Init()
        {
            var browserName = properties.SelectSingleNode("//browser").InnerXml;

            driver = DriverFactory.GetDriver(browserName);
            driver.Manage().Window.Maximize();
            driver.Url = storeUrl;

            menu = PageObjectFactory.CreateMenuPage(driver);
        }
        private ProductPage AddRandomProduct()
        {
            var random = new Random().Next(1, 5);

            Debug.WriteLine($"Adding {random} random products");
            menu = PageObjectFactory.CreateMenuPage(driver);
            ProductPage productPage = menu.GoToRandomCategory()
                                      .GoToRandomProductPageAndAssertItSwitchedCorrectly();

            AddToExpectedOrder(productPage.GetProductName(), productPage.GetProductPrice(), random);

            return(productPage.AddProductXtimes(random));
        }
        public ProductPage GoToRandomProductPageAndAssertItSwitchedCorrectly()
        {
            var size   = products.Count;
            var random = new Random().Next(0, size);

            IWebElement element     = products.ElementAt(random);
            string      productName = Regex.Replace(element.Text, removeDashesRegex, "");

            ClickElement(element, nameof(element));
            ProductPage productPage = PageObjectFactory.CreateProductPage(driver);

            AssertEquals(productName, productPage.GetProductName());
            return(productPage);
        }
Exemple #13
0
        public void ShouldBeAbleToCreatePageObjectWithDefaultPageElements()
        {
            var defaultElementsPageObject =
                PageObjectFactory.GetPageObjectByType <DefaultElementsPageObject>(GetWebDriverMock());

            Assert.AreEqual(defaultElementsPageObject.GetType(), typeof(DefaultElementsPageObject));
            Assert.AreEqual(defaultElementsPageObject.ButtonElement.GetType(), typeof(Button));
            Assert.AreEqual(defaultElementsPageObject.CheckBoxElement.GetType(), typeof(CheckBox));
            Assert.AreEqual(defaultElementsPageObject.HiddenElement.GetType(), typeof(HiddenElement));
            Assert.AreEqual(defaultElementsPageObject.ImageElement.GetType(), typeof(Image));
            Assert.AreEqual(defaultElementsPageObject.InputElement.GetType(), typeof(Input));
            Assert.AreEqual(defaultElementsPageObject.LinkElement.GetType(), typeof(Link));
            Assert.AreEqual(defaultElementsPageObject.SelectBoxElement.GetType(), typeof(SelectBox));
        }
        public void CheckTitles()
        {
            List <string> menuOptions = new List <string>()
            {
                "News",
                "Documentation",
                "Contact"
            };
            var homePage = PageObjectFactory.GetPage <NUnitHomePage>();

            homePage.Open();

            foreach (var menuOption in menuOptions)
            {
                homePage.OpenMenu(menuOption.ToLower());
                string actualResult = homePage.GetTitle();
                Assert.IsTrue(actualResult.Contains(menuOption));
            }
        }
        public void InitElements_DecoratesProperties([Frozen] Mock <IPageObjectMemberDecorator> memberDecoratorMock,
                                                     PageObjectFactory pageObjectFactory,
                                                     PageObjectWithProperties pageObject,
                                                     int value)
        {
            memberDecoratorMock.Setup(x => x.Decorate(typeof(int),
                                                      It.IsAny <IEnumerable <By> >(),
                                                      It.IsAny <IElementLocator>()))
            .Returns(value);

            pageObjectFactory.InitElements(pageObject);

            memberDecoratorMock.Verify(x => x.Decorate(typeof(int),
                                                       It.IsAny <IEnumerable <By> >(),
                                                       It.IsAny <IElementLocator>()), Times.Exactly(4));

            pageObject.PublicProperty.Should().Be(value);
            pageObject.PrivatePropertyValue().Should().Be(value);
            pageObject.ProtectedPropertyValue().Should().Be(value);
            pageObject.InternalPropertyValue().Should().Be(value);
        }
        public void VulnerabilityScanAfterLogin()
        {
            Client.Pscan.EnableAllScanners(ApiKey);

            Driver.Navigate().GoToUrl(Target + "insecure/public/Login.jsp");

            var loginPage = PageObjectFactory.GetInitializedPageObject <LoginPage>(Driver);

            loginPage.SendKeysToLoginField("admin");
            loginPage.SendKeysToPasswordField("secret");
            loginPage.PressLoginButton();

            var apiResponse = ScanHelper.StartSpider(Client);

            ScanHelper.WaitForTaskToComplete(apiResponse, Client.Spider.GetStatus);

            apiResponse = ScanHelper.StartAscan(Client);
            ScanHelper.WaitForTaskToComplete(apiResponse, Client.Ascan.GetStatus);

            AlertHelper.PrintAlertsToConsole(Client.Core.GetAlerts(Target));
        }
Exemple #17
0
 public AccountTestSteps(PageObjectFactory page)
 {
     _page = page;
 }
        public async Task <T> ClickContinue <T>() where T : PageObject
        {
            await Page.ClickOn(ContinueButton);

            return(PageObjectFactory.CreatePage <T>(Page) as T);
        }
Exemple #19
0
 public UsersSteps(PageObjectFactory page)
 {
     _page = page;
 }
 public CheckoutPage ClickContinueButton()
 {
     ClickElement(continueButton, nameof(continueButton));
     return(PageObjectFactory.CreateCheckoutPage(driver));
 }
Exemple #21
0
 public T ClickToPageObject <T>(TimeSpan waitBeforeClick, IDictionary <string, object> pageSettings) where T : BasePageObject
 {
     Click(waitBeforeClick, TimeSpan.Zero);
     return(PageObjectFactory.GetPageObjectByType <T>(_pageElement.WebDriver, pageSettings));
 }
Exemple #22
0
 public ShoppingCartSteps(PageObjectFactory page)
 {
     _page = page;
 }
 public T ClickToPageObject <T>(TimeSpan waitBeforeClick) where T : BasePageObject
 {
     Click(waitBeforeClick, TimeSpan.Zero);
     return(PageObjectFactory.GetPageObjectByType <T>(_pageElement.WebDriver));
 }
        public void Initialize <T>() where T : IPage
        {
            IPageObjectFactory pageObjectFactory = new PageObjectFactory();

            currentPage = pageObjectFactory.Create <T>(Driver);
        }
 public void InitElements_ArgumentNullException(PageObjectFactory pageObjectFactory)
 {
     new Action(() => pageObjectFactory.InitElements(null)).Should()
     .Throw <ArgumentNullException>();
 }
 public TransactionSummaryPage ClickPurchaseButton()
 {
     ClickElement(purchaseButton, nameof(purchaseButton));
     return(PageObjectFactory.CreateTransactionSummaryPage(driver));
 }
Exemple #27
0
 public CartPage GoToCartPage()
 {
     ClickElement(cart, nameof(cart));
     return(PageObjectFactory.CreateCartPage(driver));
 }
Exemple #28
0
 public TestPageObject(IWebDriver webDriver, PageObjectFactory pageObjectFactory)
 {
     _webDriver         = webDriver;
     _pageObjectFactory = pageObjectFactory;
 }
Exemple #29
0
        public async Task <AssignPage> ClickContinue()
        {
            await Page.ClickOn(ContinueButton);

            return(PageObjectFactory.CreatePage <AssignPage>(Page));
        }
Exemple #30
0
        public void ShouldBeAbleToCreateEmptyPageObject()
        {
            var emptyPageObject = PageObjectFactory.GetPageObjectByType <EmptyPageObject>(GetWebDriverMock());

            Assert.AreEqual(emptyPageObject.GetType(), typeof(EmptyPageObject));
        }