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; } } }