/// <summary>
        /// Saves the address.
        /// </summary>
        /// <returns></returns>
        public virtual IAddressesPage Save()
        {
            SaveElement.Click();

            // TODO: Handle error scenario.
            return(pageObjectFactory.PreparePage <IAddressesPage>());
        }
        /// <summary>
        /// Searches for product.
        /// </summary>
        /// <param name="productName">Name of the product.</param>
        public virtual void SearchForProduct(string productName)
        {
            var currentWindowHandle = WrappedDriver.CurrentWindowHandle;

            ProductNameElement.SetValue(productName);
            SearchElement.Click();

            WrappedDriver
            .Wait(TimeSpan.FromSeconds(2))
            .Until(d => !ProductsGrid.IsBusy());

            var firstCheckbox = ProductsGrid
                                .GetCell(0, 0)
                                .FindElement(By.TagName("input"));

            var checkbox = new CheckboxElement(firstCheckbox);

            checkbox.Check(true);
            SaveElement.Click();

            // Wait for the page to close.
            WrappedDriver
            .Wait(TimeSpan.FromSeconds(10))
            .Until(d => !d.WindowHandles.Contains(currentWindowHandle));
        }
        /// <summary>
        /// Saves this instance.
        /// </summary>
        /// <returns></returns>
        public virtual IInfoPage Save()
        {
            SaveElement.Click();

            // Page should reload.
            Load();

            return(this);
        }