DemoBlazeAutomation / POM / CartPage.cs
CartPage.cs
Raw
using OpenQA.Selenium;
using SeleniumExtras.WaitHelpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace DemoBlazeAutomation.POM
{
    public class CartPage : BasePage
    {
        public CartPage(IWebDriver driver) : base(driver) { }

        IWebElement BtnPlaceOrder => GetElementWhenIsClickeable(SelectorType.XPath, "//button[normalize-space()='Place Order']");
        IWebElement NameField => GetElementWhenIsClickeable(SelectorType.Id, "name");
        IWebElement CountryField => GetElementWhenIsClickeable(SelectorType.Id, "country");
        IWebElement CityField => GetElementWhenIsClickeable(SelectorType.Id, "city");
        IWebElement CreditCardField => GetElementWhenIsClickeable(SelectorType.Id, "card");
        IWebElement MonthField => GetElementWhenIsClickeable(SelectorType.Id, "month");
        IWebElement YearField => GetElementWhenIsClickeable(SelectorType.Id, "year");
        IWebElement Purchase => GetElementWhenIsClickeable(SelectorType.XPath, "//div[@class ='modal-footer']//*[contains(text() , 'Purchase')]");
        IWebElement SweetPop => GetElementIsVisible(SelectorType.XPath, "//div[contains(@class,'showSweetAlert visible')]");
        IWebElement BtnOKPurchase => GetElementWhenIsClickeable(SelectorType.XPath, "//button[normalize-space()='OK']");
        IWebElement PurchaseOK => GetElementWhenIsClickeable(SelectorType.XPath, "//div[@class='sa-confirm-button-container']");
        IWebElement Cart => GetElementWhenIsClickeable(SelectorType.Id, "cartur");
        string GetTotal => GetElementIsVisible(SelectorType.XPath, "//div[@class='panel panel-info']").Text;

        public void CompletePurchaseDetails()
        {
            GoToCart();
            ClickPlaceOrder();
            CompleteCheckOut();
            Buy();
        }

        public void GoToCart()
        {
            ClickElement(Cart);
        }
        private void ClickPlaceOrder()
        {
            ClickElement(BtnPlaceOrder);
        }

        private void CompleteCheckOut()
        {
            Write(NameField, "Martin");
            Write(CountryField, "Argentina");
            Write(CityField, "Buenos Aires");
            Write(CreditCardField, "12354255");
            Write(MonthField, "10");
            Write(YearField, "2024");
        }

        private void Buy()
        {
            ClickElement(Purchase);
        }

        public bool DisplayMessageConfirmation()
        {
            return ElementIsDisplayed(SweetPop);
        }

        public string MessageOK()
        {
            return GetTextFromElement(SweetPop);
        }

        public void FinishPurchase()
        {
            ClickElement(BtnOKPurchase);
        }

        public int TotalElements()
        {
            var list = Wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.CssSelector("#tbodyid tr")));
            return list.Count;
        }



        public decimal TotalPurchase()
        {
            var list = Wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.CssSelector("#tbodyid tr td:nth-child(3)")));
            decimal total = 0;

            foreach (var element in list)
            {
                // Obtener el texto de la celda y convertirlo a decimal
                if (decimal.TryParse(element.Text, out decimal value))
                {
                    total += value;
                }
                else
                {
                    // Si el valor no se puede convertir a decimal, muestra un mensaje de advertencia
                    Console.WriteLine("No se pudo convertir el valor de la celda a decimal: " + element.Text);
                }
            }

            return total;

        }


    }
}