internal List <SortedDictionary <string, string> > AddOrderDetailPageItmesTodic(string purchasedItemNumber, List <SortedDictionary <string, string> > mergedScAndCartWidgetListWithOrderNum) { var orderDetailPageItemsList = new List <SortedDictionary <string, string> >(); var orderDetailPageItemsDic = new SortedDictionary <string, string>(); var productCount = BrowserInit.Driver.FindElements(By.XPath("(.//*[contains(@class,'item-start')])")); Assert.IsTrue(productCount.Count.ToString().Trim().Equals(purchasedItemNumber)); foreach (var hostingProductName in BrowserInit.Driver.FindElements(By.XPath("(.//*[contains(@class,'details-start')]/preceding-sibling::tr[not(contains(@class,'details-start'))] //h3[not(contains(concat(' ',normalize-space(.),' '),'Domain'))])"))) { orderDetailPageItemsDic.Add(EnumHelper.HostingKeys.ProductName.ToString(), hostingProductName.Text.Trim()); orderDetailPageItemsList.Add(orderDetailPageItemsDic); } foreach (var dic in orderDetailPageItemsList) { var hostingPlan = dic[EnumHelper.HostingKeys.ProductName.ToString()].Trim(); var xpath = ".//h3[.=" + hostingPlan + "']//following:td"; var productDuration = BrowserInit.Driver.FindElement(By.XPath(xpath + "[2]//p")).Text.Trim(); dic.Add(EnumHelper.HostingKeys.ProductDuration.ToString(), productDuration); var oldPrice = BrowserInit.Driver.FindElement(By.XPath(xpath + "[4]//p")).Text.Trim(); dic.Add(EnumHelper.HostingKeys.ProductPrice.ToString(), oldPrice); var productStatus = BrowserInit.Driver.FindElement(By.XPath(xpath + "[5]/p/span")).Text.Trim(); Assert.IsTrue(productStatus.Equals("Success", StringComparison.OrdinalIgnoreCase), hostingPlan + " Status is incorrect expected Success But Actual is " + productStatus); } AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(orderDetailPageItemsList, mergedScAndCartWidgetListWithOrderNum); var domaincount = mergedScAndCartWidgetListWithOrderNum[Convert.ToInt32(EnumHelper.HostingKeys.ProductDomainName.ToString())].Count; var billingListDomainCount = BrowserInit.Driver.FindElements( By.XPath("(.//*[contains(@class,'item-start')]//h3[contains(normalize-space(),'Domain')])")).Count; Assert.IsTrue(domaincount.Equals(billingListDomainCount), "Domain registration count should be equal Expected:- Domain Registration Count is " + domaincount + " But Actual In History Page is " + billingListDomainCount); var whoisCountInDic = mergedScAndCartWidgetListWithOrderNum.Count(dicwhois => dicwhois.ContainsKey(EnumHelper.ShoppingCartKeys.WhoisGuardForDomainStatus.ToString())); Assert.IsTrue(PageInitHelper <ValidateDomainOrderInBillingPage> .PageInit.WhoisCountInProductPage.Count.Equals(whoisCountInDic), "Who is Gaurd count should be equal Expected:- Who is Gaurd Count is " + whoisCountInDic + " But Actual In History Page is " + PageInitHelper <ValidateDomainOrderInBillingPage> .PageInit.WhoisCountInProductPage); var subtotalAmount = Regex.Replace( BrowserInit.Driver.FindElement( By.XPath("(.//*[contains(@class,'subtotal')]/td[contains(@class,'price')])[1]/p")).Text.Trim(), @"[^\d..][^\w\s]*", ""); var subtotalCharged = Regex.Replace( BrowserInit.Driver.FindElement( By.XPath("(.//*[contains(@class,'subtotal')]/td[contains(@class,'price')])[2]/p")).Text.Trim(), @"[^\d..][^\w\s]*", ""); var cultureInfo = new CultureInfo("en-US"); Assert.IsTrue(string.Format(cultureInfo, "{0:C}", subtotalAmount).Equals(string.Format(cultureInfo, "{0:C}", subtotalCharged))); return(orderDetailPageItemsList); }
public void VerifyPurchasedOrderInBillingHistoryPage( List <SortedDictionary <string, string> > listOfDicNameToBeVerified) { var purchasedItemNumber = PageInitHelper <ValidateDomainOrderInBillingPage> .PageInit.OrderSummaryPageVerification( listOfDicNameToBeVerified); var orderdetaipageList = PageInitHelper <ValidateDomainOrderInBillingPage> .PageInit.AddOrderDetailPageItemsTodic( purchasedItemNumber, listOfDicNameToBeVerified); AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(orderdetaipageList, listOfDicNameToBeVerified); }
public List <SortedDictionary <string, string> > AddShoppingCartItemsToDic(List <SortedDictionary <string, string> > cartWidgetList, string whois, string premiumDns) { // PageInitHelper<AddProductShoppingCartItems>.PageInit.MessageAndAlertVerification(); var shoppingcartItemList = PageInitHelper <AddProductShoppingCartItems> .PageInit.AddShoppingCartItemsToDictionaries(cartWidgetList, whois, premiumDns); AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(shoppingcartItemList, cartWidgetList); AMerge mergeTWoListOfDic = new MergeData(); var mergedScAndCartWidgetDic = mergeTWoListOfDic.MergingTwoListOfDic(shoppingcartItemList, cartWidgetList); PageInitHelper <ShoppingCartPageFactory> .PageInit.ConfirmOrderBtn.Click(); return(mergedScAndCartWidgetDic); }
public List <SortedDictionary <string, string> > CartWidgetValidation(List <SortedDictionary <string, string> > searchResultDomainsList) { var subTotal = 0.00M; var icannfees = 0.00M; var domainValidity = string.Empty; var domainPrice = 0.00M; var domainName = string.Empty; var moreclass = BrowserInit.Driver.FindElement( By.XPath( "((.//*[contains(@class,'cart spacer-bottom')]//ul/li[@class='subtotal'] | //ul/li[@class='transfer'] | .//*[@class='cart-widget']/ul/li)/preceding-sibling::li)[last()]")) .GetAttribute(UiConstantHelper.AttributeClass); if (moreclass.Contains("more")) { var moretext = Regex.Replace(BrowserInit.Driver.FindElement(By.XPath(".//*[(contains(@class,'more'))]/a")).Text, "[^0-9.]", string.Empty).Trim(); if (!moretext.Equals(string.Empty)) { BrowserInit.Driver.FindElement(By.XPath(".//*[(contains(@class,'more'))]/a")).Click(); } } var cartWidgetList = new List <SortedDictionary <string, string> >(); var cartWidgetWindowItems = PageInitHelper <CartWidgetPageFactory> .PageInit.ProductListCount; SortedDictionary <string, string> cartWidgetDic; for (var itemIndex = cartWidgetWindowItems.Count + 1; itemIndex-- > 1;) { var xpath = "((.//*[contains(@class,'cart spacer-bottom')]//ul/li[@class='register'] | //ul/li[@class='transfer'] | .//*[@class='cart-widget']/ul/li)[not(contains(@class,'subtotal'))][not(contains(@class,'more'))])[" + itemIndex + "]"; var ele = BrowserInit.Driver.FindElement(By.XPath(xpath)); PageInitHelper <PageNavigationHelper> .PageInit.ScrollToElement(ele); cartWidgetDic = new SortedDictionary <string, string>(); var cItemClass = ele.GetAttribute("class"); if (cItemClass.Contains(string.Empty) | cItemClass.IndexOf("register", StringComparison.CurrentCultureIgnoreCase) >= 0 | cItemClass.IndexOf("transfer", StringComparison.CurrentCultureIgnoreCase) >= 0) { var widgetItemDomainName = BrowserInit.Driver.FindElement(By.XPath(xpath + "//strong")).Text; if (widgetItemDomainName.Contains(".")) { domainName = widgetItemDomainName.Trim(); } var domainValidityDetails = BrowserInit.Driver.FindElements(By.XPath(xpath + "/ul/li/p")); for (var i = 1; i <= domainValidityDetails.Count; i++) { var spanCount = BrowserInit.Driver.FindElements(By.XPath(xpath + "/ul/li/p/span")); for (var j = 1; j <= spanCount.Count; j++) { var spanclass = BrowserInit.Driver.FindElement(By.XPath("(" + xpath + "/ul/li/p/span)[" + j + "]")) .GetAttribute(UiConstantHelper.AttributeClass); if (spanclass.Contains("item")) { var spantext = BrowserInit.Driver.FindElement(By.XPath("(" + xpath + "/ul/li/p/span)[" + j + "]")) .Text; if (spantext.IndexOf("registration", StringComparison.CurrentCultureIgnoreCase) >= 0) { domainValidity = Regex.Replace(spantext, "registration", string.Empty).Trim(); } else if (spantext.IndexOf("transfer", StringComparison.CurrentCultureIgnoreCase) >= 0) { domainValidity = Regex.Replace(spantext, "transfer", string.Empty).Trim(); } else if (spantext.IndexOf("FreeDNS", StringComparison.CurrentCultureIgnoreCase) >= 0) { cartWidgetDic.Add("Domaintype", spantext.Trim()); } } else if (spanclass.Contains("price")) { var spantext = BrowserInit.Driver.FindElement(By.XPath("(" + xpath + "/ul/li/p/span)[" + j + "]/../span[1]")).Text; var spanPrice = BrowserInit.Driver.FindElement(By.XPath("(" + xpath + "/ul/li/p/span)[" + j + "]")).Text; if (spantext.IndexOf("registration", StringComparison.CurrentCultureIgnoreCase) >= 0 | spantext.IndexOf("transfer", StringComparison.CurrentCultureIgnoreCase) >= 0) { domainPrice = Convert.ToDecimal(Regex.Replace(spanPrice, @"[^\d..][^\w\s]*", string.Empty).Trim()); } else if (spantext.Contains("ICANN fee")) { icannfees = Convert.ToDecimal(Regex.Replace(spanPrice, @"[^\d..][^\w\s]*", string.Empty).Trim()); } else if (spantext.IndexOf("FreeDNS", StringComparison.CurrentCultureIgnoreCase) >= 0) { domainPrice = Convert.ToDecimal(0.00M); } } } } } cartWidgetDic.Add(EnumHelper.DomainKeys.DomainName.ToString(), domainName.Trim()); if (domainValidity != string.Empty) { cartWidgetDic.Add(EnumHelper.DomainKeys.DomainDuration.ToString(), domainValidity); } cartWidgetDic.Add(EnumHelper.DomainKeys.DomainPrice.ToString(), domainPrice.ToString(CultureInfo.InvariantCulture)); cartWidgetDic.Add(EnumHelper.CartWidget.IcanPrice.ToString(), icannfees.ToString(CultureInfo.InvariantCulture)); subTotal = subTotal + domainPrice + icannfees; cartWidgetList.Add(cartWidgetDic); domainName = string.Empty; domainValidity = string.Empty; domainPrice = 0.00M; icannfees = 0.00M; } cartWidgetDic = new SortedDictionary <string, string> { { EnumHelper.CartWidget.SubTotal.ToString(), subTotal.ToString(CultureInfo.InvariantCulture) } }; cartWidgetList.Add(cartWidgetDic); var subtotaldiv = PageInitHelper <CartWidgetPageFactory> .PageInit.SubTotal; PageInitHelper <PageNavigationHelper> .PageInit.ScrollToElement(subtotaldiv); var widgetSubTotalText = subtotaldiv.Text; var widgetSubTotal = Convert.ToDecimal(Regex.Replace(widgetSubTotalText, @"[^\d..][^\w\s]*", string.Empty).Trim()); Assert.IsTrue(widgetSubTotal.Equals(Convert.ToDecimal(cartWidgetDic[EnumHelper.CartWidget.SubTotal.ToString()])), "Cart Widget domain subtotal mismatching with subtotal values Expected - " + Convert.ToDecimal(cartWidgetDic[EnumHelper.CartWidget.SubTotal.ToString()]) + ", but actual subtotal shown as - " + widgetSubTotal); AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(searchResultDomainsList, cartWidgetList); AMerge mergeTWoListOfDic = new MergeData(); mergeTWoListOfDic.MergingTwoListOfDic(searchResultDomainsList, cartWidgetList); PageInitHelper <CartWidgetPageFactory> .PageInit.ViewCartButton.Click(); return(cartWidgetList); }
public List <SortedDictionary <string, string> > CartWidgetValidation(List <SortedDictionary <string, string> > domainListValidation) { var cartBelongsTo = PageInitHelper <CartWidgetPageFactory> .PageInit.CartContent.GetAttribute(UiConstantHelper .AttributeId); Assert.IsTrue(cartBelongsTo.Contains("productUl")); var cartWidgetList = new List <SortedDictionary <string, string> >(); var cartWidgetDic = new SortedDictionary <string, string>(); foreach (var cartItem in PageInitHelper <CartWidgetPageFactory> .PageInit.CartWidgetWindowItems.Select((value, i) => new { i, value })) { var subitemvalue = cartItem.value; var subitemindex = cartItem.i + 1; var cItemClass = subitemvalue.GetAttribute("class"); if (!cItemClass.Equals(string.Empty)) { continue; } if (BrowserInit.Driver.FindElement(By.XPath("((.//*[contains(@class,'cart spacer-bottom')]//ul/li[@class='register'] | //ul/li[@class='transfer'] | .//*[@class='cart-widget']/ul/li|(//ul/li[not(@class)]/strong[contains(@class,'product')]/..)| .//*[@class='cart-widget']/ul/li)[not(contains(@class,'subtotal'))][not(contains(@class,'more'))])[" + subitemindex + "]/..")) .GetAttribute(UiConstantHelper.AttributeClass) .Contains("WhoisGuard")) { var pCount = subitemvalue.FindElements(By.TagName("p")); foreach (var spanClass in from itemTxt in pCount let pClassText = itemTxt.GetAttribute(UiConstantHelper.AttributeClass) where pClassText.Equals(string.Empty) select itemTxt.FindElements(By.TagName("span")) into spanCount from spanClass in spanCount select spanClass) { if (spanClass.GetAttribute(UiConstantHelper.AttributeClass).Contains("item")) { cartWidgetDic.Add(EnumHelper.ShoppingCartKeys.WhoisGuardForDomainDuration.ToString(), spanClass.Text.Replace("subscription", "").Trim()); } else if (spanClass.GetAttribute(UiConstantHelper.AttributeClass) .Contains("price")) { var priceText = spanClass.Text.Equals("FREE") ? "0.00" : Regex.Replace(spanClass.Text, @"[^\d..][^\w\s]*", ""); cartWidgetDic.Add(EnumHelper.ShoppingCartKeys.WhoisGuardForDomainPrice.ToString(), priceText.Trim()); } } } else { var strongClassName = subitemvalue.FindElement(By.TagName("strong")) .GetAttribute(UiConstantHelper.AttributeClass); var productName = subitemvalue.FindElement(By.TagName("strong")).Text; if (strongClassName.Equals("productname".Trim()) && !productName.Contains(".")) { if (subitemvalue.Text.Contains("Xeon")) { var dServers = Regex.Split(subitemvalue.Text, "(,)")[0]; var dedicatedServers = dServers.Split(' ')[0] + " " + dServers.Split(' ')[1] + " " + dServers.Split(' ')[2]; cartWidgetDic.Add(EnumHelper.HostingKeys.ProductName.ToString(), dedicatedServers); } else { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductName.ToString(), subitemvalue.FindElement(By.TagName("strong")).Text); } var pCount = subitemvalue.FindElements(By.TagName("p")); foreach (var itemTxt in pCount) { var pClassText = itemTxt.GetAttribute(UiConstantHelper.AttributeClass); if (pClassText.Equals(string.Empty)) { var spanCount = itemTxt.FindElements(By.TagName("span")); foreach (var spanClass in spanCount) { if (spanClass.GetAttribute(UiConstantHelper.AttributeClass).Contains("item")) { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductDuration.ToString(), spanClass.Text.Replace("subscription", "").Trim()); } else if (spanClass.GetAttribute(UiConstantHelper.AttributeClass) .Contains("price")) { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductPrice.ToString(), Regex.Replace(spanClass.Text, @"[^\d..][^\w\s]*", "").Trim()); } } } if (!pClassText.EndsWith("addon")) { continue; } { var spanCount = itemTxt.FindElements(By.TagName("span")); var associatedDicKey = ""; var associatedDicValue = ""; for (var i = 0; i < spanCount.Count; i++) { if (i == 0) { string associatedDicKeyTxt = spanCount[i].Text; associatedDicKey = associatedDicKeyTxt.Contains("transfer") ? associatedDicKeyTxt.Replace("transfer", "").Trim() : associatedDicKeyTxt; } else { associatedDicValue = spanCount[i].Text; } } var priceText = associatedDicValue.Equals("FREE") ? "0.00" : Regex.Replace(associatedDicValue, @"[^\d..][^\w\s]*", ""); cartWidgetDic.Add(associatedDicKey.Trim(), priceText.Trim()); } } } else if (strongClassName.Contains("productname domain".Trim()) || productName.Contains(".")) { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductDomainName.ToString(), subitemvalue.FindElement(By.TagName("strong")).Text); var pCount = subitemvalue.FindElements(By.TagName("p")); foreach (var itemTxt in pCount) { var spanCount = itemTxt.FindElements(By.TagName("span")); foreach (var spanClass in spanCount.Select((value, i) => new { i, value })) { if (spanClass.value.GetAttribute(UiConstantHelper.AttributeClass) .Contains("item") && spanClass.value.Text != "ICANN fee") { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductDomainDuration.ToString(), spanClass.value.Text.Replace("registration", string.Empty).Replace("transfer", string.Empty).Trim()); } else if (spanClass.value.GetAttribute(UiConstantHelper.AttributeClass) .Contains("price") && pCount.IndexOf(itemTxt) != 1) { cartWidgetDic.Add(EnumHelper.HostingKeys.ProductDomainPrice.ToString(), decimal.Parse(Regex.Replace(spanClass.value.Text, @"[^\d..][^\w\s]*", "").Trim()).ToString(CultureInfo.InvariantCulture)); } else if (spanClass.i.ToString() == "1") { if (spanClass.value.GetAttribute(UiConstantHelper.AttributeClass) .Contains("price")) { cartWidgetDic.Add(EnumHelper.CartWidget.IcanPrice.ToString(), decimal.Parse(Regex.Replace(spanClass.value.Text, @"[^\d..][^\w\s]*", "").Trim()).ToString(CultureInfo.InvariantCulture)); } } } } } } } var subTotal = cartWidgetDic.Where(dicCartWidgetItem => dicCartWidgetItem.Value.Contains(".") && !dicCartWidgetItem.Key.Equals(EnumHelper.HostingKeys.ProductDomainName.ToString()) && !dicCartWidgetItem.Key.Equals(EnumHelper.HostingKeys.ProductName.ToString())).Aggregate(0.0m, (current, dicCartWidgetItem) => current + decimal.Parse(dicCartWidgetItem.Value)); cartWidgetDic.Add(EnumHelper.CartWidget.SubTotal.ToString(), subTotal.ToString(CultureInfo.InvariantCulture)); cartWidgetList.Add(cartWidgetDic); var widgetSubTotal = decimal.Parse(Regex.Replace( PageInitHelper <CartWidgetPageFactory> .PageInit.CartWidgetSubTotal.Text, @"[^\d..][^\w\s]*", "")); var dictWithKey = cartWidgetList.First(d => d.ContainsKey(EnumHelper.CartWidget.SubTotal.ToString())); var dicSubTotalValue = decimal.Parse( Regex.Replace(dictWithKey[EnumHelper.CartWidget.SubTotal.ToString()], "\"[^\"]*\"", "") .Trim()); Assert.IsTrue(dicSubTotalValue.Equals(widgetSubTotal), "Sub total is miss matching with widget sub total"); AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(domainListValidation, cartWidgetList); AMerge mergeTWoListOfDic = new MergeData(); cartWidgetList = mergeTWoListOfDic.MergingTwoListOfDic(domainListValidation, cartWidgetList); PageInitHelper <CartWidgetPageFactory> .PageInit.ViewCartButton.Click(); if (!PageInitHelper <CartWidgetPageFactory> .PageInit.ShoppingCartHeadingTxt.Text.Trim().Equals("Shopping Cart")) { PageInitHelper <CartWidgetPageFactory> .PageInit.ViewCartButton.Click(); } return(cartWidgetList); }
public List <SortedDictionary <string, string> > AddShoppingCartItemsToDic(List <SortedDictionary <string, string> > cartWidgetList, string whois, string premiumDns) { var certificateQtyinSc = string.Empty; var certificateDurationinSc = string.Empty; var certificatePriceinSc = 0.00M; var shoppingcartItemList = new List <SortedDictionary <string, string> >(); const string productGroupsXpath = "(.//*[@class='product-group'])"; var productGroups = BrowserInit.Driver.FindElements(By.XPath(productGroupsXpath)); var i = 0; foreach (var productGroup in productGroups) { i = i + 1; var shoppingCartItemsDic = new SortedDictionary <string, string>(); var certificateNameinSc = Regex.Replace(productGroup.FindElement(By.TagName("strong")).Text.Trim(), "UPDATE", string.Empty); var cerQty = productGroup.FindElements(By.ClassName("qty")).Count > 0; if (cerQty) { certificateQtyinSc = productGroup.FindElement(By.XPath("//*[contains(@class,'qty')]/input")).GetAttribute(UiConstantHelper.AttributeValue).Trim(); } var certificateDurationcount = productGroup.FindElement(By.XPath("//*[contains(@class,'Duration')]")); foreach (var certificateDuration in certificateDurationcount.FindElements(By.TagName("span")).Where(certificateDuration => certificateDuration.Text.Contains("Year"))) { certificateDurationinSc = certificateDuration.Text.Trim(); break; } if (BrowserInit.Driver.FindElements(By.XPath("(" + productGroupsXpath + "[" + i + "]/../div/div/*)")).Count == 4) { var extraCount = BrowserInit.Driver.FindElements( By.XPath("(" + productGroupsXpath + "[" + i + "]/../div/div/*)[2]//*")); foreach (var extradomainPrice in from extraDomain in extraCount where extraDomain.GetAttribute(UiConstantHelper.AttributeClass).Contains("price") select decimal.Parse(Regex.Replace(extraDomain.Text, @"[^\d..][^\w\s]*", string.Empty).Trim())) { shoppingCartItemsDic.Add("Extra domain price", extradomainPrice.ToString(CultureInfo.InvariantCulture)); break; } } var cerPriceCount = BrowserInit.Driver.FindElements(By.XPath("(" + productGroupsXpath + "[" + i + "]//div[3]/span)")); foreach (var cerPrice in cerPriceCount.Where(cerPrice => cerPrice.GetAttribute(UiConstantHelper.AttributeClass).Contains("amount"))) { certificatePriceinSc = decimal.Parse(Regex.Replace(cerPrice.Text, @"[^\d..][^\w\s]*", string.Empty).Trim()); } shoppingCartItemsDic.Add(EnumHelper.Ssl.CertificateName.ToString(), certificateNameinSc); shoppingCartItemsDic.Add(EnumHelper.Ssl.CertificatePrice.ToString(), certificatePriceinSc.ToString(CultureInfo.InvariantCulture)); shoppingCartItemsDic.Add(EnumHelper.Ssl.CertificateDuration.ToString(), certificateDurationinSc); if (certificateQtyinSc != string.Empty) { shoppingCartItemsDic.Add("Certificate Qty", certificateQtyinSc); } shoppingcartItemList.Add(shoppingCartItemsDic); } AVerify verifingTwoListOfDic = new VerifyData(); verifingTwoListOfDic.VerifyTwoListOfDic(shoppingcartItemList, cartWidgetList); AMerge mergeTWoListOfDic = new MergeData(); var mergedScAndCartWidgetDic = mergeTWoListOfDic.MergingTwoListOfDic(shoppingcartItemList, cartWidgetList); PageInitHelper <ShoppingCartPageFactory> .PageInit.ConfirmOrderBtn.Click(); return(mergedScAndCartWidgetDic); }