From ad04e1e31129d1fc8471c50d708122aea0a3785e Mon Sep 17 00:00:00 2001 From: cleeding <50547620+cleeding@users.noreply.github.com> Date: Tue, 25 Mar 2025 07:53:34 +0000 Subject: [PATCH] pay bills test and page --- Pages/AccountSummaryPage.cs | 13 ++++++++ Pages/OnlineBankingPage.cs | 7 +++- Pages/PayBillsPage.cs | 66 +++++++++++++++++++++++++++++++++++++ Tests/BaseTest.cs | 2 ++ Tests/PayBillsTests.cs | 46 ++++++++++++++++++++++++++ 5 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 Pages/AccountSummaryPage.cs create mode 100644 Pages/PayBillsPage.cs create mode 100644 Tests/PayBillsTests.cs diff --git a/Pages/AccountSummaryPage.cs b/Pages/AccountSummaryPage.cs new file mode 100644 index 0000000..be4775b --- /dev/null +++ b/Pages/AccountSummaryPage.cs @@ -0,0 +1,13 @@ +using OpenQA.Selenium; + +namespace CSharpSeleniumFramework.Pages{ + + public class AccountSummaryPage : BasePage{ + + public AccountSummaryPage(IWebDriver driver) : base(driver){ + + } + + } + + } diff --git a/Pages/OnlineBankingPage.cs b/Pages/OnlineBankingPage.cs index c10c28a..c7b01a6 100644 --- a/Pages/OnlineBankingPage.cs +++ b/Pages/OnlineBankingPage.cs @@ -13,11 +13,16 @@ public class OnlineBankingPage : BasePage // Selectors private By _h1Header = By.TagName("h1"); + private By _payBillsLink = By.Id("pay_bills_link"); // Constructor - public OnlineBankingPage(IWebDriver driver) : base(driver){} + public OnlineBankingPage(IWebDriver driver) : base(driver) { } // Methods + public void ClickPayBillsLink() + { + ClickElement(_payBillsLink); + } public void CheckOnlineBankingPageHeader() { string h1Header = _driver.FindElement(_h1Header).Text; diff --git a/Pages/PayBillsPage.cs b/Pages/PayBillsPage.cs new file mode 100644 index 0000000..dd6b534 --- /dev/null +++ b/Pages/PayBillsPage.cs @@ -0,0 +1,66 @@ +using NUnit.Framework; +using OpenQA.Selenium; +using OpenQA.Selenium.BiDi.Modules.Input; +using OpenQA.Selenium.Support.UI; + +namespace CSharpSeleniumFramework.Pages + +{ + public class PayBillsPage : BasePage + { + // Selectors + private By _payButton = By.Id("pay_saved_payees"); + private By _payeeField = By.Id("sp_payee"); + private By _accountField = By.Id("sp_account"); + private By _amountfield = By.Id("sp_amount"); + private By _dateField = By.Id("sp_date"); + private By _descriptionField = By.Id("sp_description"); + private By _alertTitleLocator = By.CssSelector("#alert_content span"); + + // Constructor + public PayBillsPage(IWebDriver driver) : base(driver) { } + + // Methods + public void ClickPayButton() + { + ClickElement(_payButton); + } + + public void SelectPayee(string payee) + { + // Explicit wait to check if the element is visible + _wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(_payeeField)); + + new SelectElement(_driver.FindElement(_payeeField)).SelectByValue(payee); + } + + public void SelectAccount(string account) + { + new SelectElement(_driver.FindElement(_accountField)).SelectByValue(account); + } + + public void EnterAmount(string amount) + { + SendText(_amountfield, true, amount); + } + + public void EnterDate(string date) + { + SendText(_dateField, true, date); + _driver.FindElement(_dateField).SendKeys(Keys.Return); + } + + public void EnterDescription(string description) + { + SendText(_descriptionField, true, description); + } + + public void CheckAlertTitleMatchesExpectedAmount(string amount) + { + WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10)); + IWebElement alertSpan = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(_alertTitleLocator)); + string alertTitleText = alertSpan.GetAttribute("title"); + Assert.That(alertTitleText, Is.EqualTo($"$ {amount} payed to payee apple"), "The alert message did not match the expected string amount"); + } + } +} \ No newline at end of file diff --git a/Tests/BaseTest.cs b/Tests/BaseTest.cs index cc584ce..371877c 100644 --- a/Tests/BaseTest.cs +++ b/Tests/BaseTest.cs @@ -17,6 +17,7 @@ public class BaseTest protected OnlineBankingPage _onlineBankingPage; protected TransferFundsPage _transferFundsPage; protected AccountActivityPage _accountActivityPage; + protected PayBillsPage _payBillsPage; [SetUp] public virtual void Setup() @@ -28,6 +29,7 @@ public virtual void Setup() _onlineBankingPage = new OnlineBankingPage(_driver); _transferFundsPage = new TransferFundsPage(_driver); _accountActivityPage = new AccountActivityPage(_driver); + _payBillsPage = new PayBillsPage(_driver); _driver.Manage().Window.Maximize(); //Visit the application diff --git a/Tests/PayBillsTests.cs b/Tests/PayBillsTests.cs new file mode 100644 index 0000000..a04023a --- /dev/null +++ b/Tests/PayBillsTests.cs @@ -0,0 +1,46 @@ +using Allure.NUnit; +using Allure.NUnit.Attributes; +using NUnit.Framework; + +namespace CSharpSeleniumFramework.Tests +{ + [TestFixture] + [AllureNUnit] + public class PayBillsTest : BaseTest + { + [SetUp] + public override void Setup() + { + base.Setup(); + // Login + string username = "username"; + string password = "password"; + _homePage.ClickSignInButton(); + _loginPage.Login(username, password); + _loginPage.ByPassSSLCertIssue(); + } + + [Test] + [AllureFeature("Pay Bills")] + [AllureStory("Verify can make payment to a saved payee")] + public void PaySavedPayee() + { + string payee = "apple"; + string account = "2"; + string amount = "150.00"; + string date = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"); + string description = "Mobile phone services"; + + + _homePage.ClickOnlineBankingLink(); + _onlineBankingPage.ClickPayBillsLink(); + _payBillsPage.SelectPayee(payee); + _payBillsPage.SelectAccount(account); + _payBillsPage.EnterAmount(amount); + _payBillsPage.EnterDate(date); + _payBillsPage.EnterDescription(description); + _payBillsPage.ClickPayButton(); + _payBillsPage.CheckAlertTitleMatchesExpectedAmount(amount); + } + } +} \ No newline at end of file