def setUpClass(cls):
     cls.driver = webdriver.Chrome(
         executable_path="E:\\chromedriver_win32\\chromedriver.exe")
     cls.driver.maximize_window()
     BankAPP_CommonFunctions.login_bankApp(cls.driver,
                                           BankAPP_CommonFunctions.username,
                                           BankAPP_CommonFunctions.Password)
     BankAPP_CommonFunctions.close_popup(cls.driver)
    def test_enquire_balance(self):
        try:
            BankAPP_CommonFunctions.click_menu_by_partial_link_text(
                "Balance Enq", "Balance Enquiry")

        except Exception as e:
            print("Exception found in balance enquiry test method :",
                  type(e).__name__)
            print(
                'Error on line {} of ' + __name__ +
                " of class ".format(sys.exc_info()[-1].tb_lineno),
                type(e).__name__, e)
def test_8delete_account(setup):
    print("8delete_account called............")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.close_popup(driver)
    account_id_delete = TC_DeleteAccountTest.create_dummy_account(driver)
    print("Acc id to delete:", account_id_delete)
    BankAPP_CommonFunctions.close_popup(driver)
    BankAPP_CommonFunctions.click_menu_by_partial_link_text(
        driver, "Delete Acc", "Delete Account")
    TC_DeleteAccountTest.search_acc_BYID_Delete(driver, account_id_delete,
                                                "Yes")
    BankAPP_CommonFunctions.logout(driver)
 def create_dummy_account(driver):
     total_row = Excelutility.get_row_count(TC_DeleteAccountTest.Path,TC_DeleteAccountTest.Sheet_Name)
     print("Total Row:",total_row)
     last_cust_id = Excelutility.read_data(TC_DeleteAccountTest.Path,TC_DeleteAccountTest.Sheet_Name,total_row,1)
     print("Last Cust Id :",last_cust_id)
     BankAPP_CommonFunctions.close_popup(driver)
     BankAPP_CommonFunctions.click_menu_by_perform_mouse_action(driver, "New Acc", "new account")
     TC_AddAccountTest.add_account_details(driver,last_cust_id,"Savings",3000)
     TC_AddAccountTest.validate_account_info(driver,"Savings",3000)
     total_row_after_addition = Excelutility.get_row_count(TC_DeleteAccountTest.Path, TC_DeleteAccountTest.Sheet_Name)
     print("Total row in excel after adding new account:",total_row_after_addition)
     account_id_to_delete = Excelutility.read_data(TC_DeleteAccountTest.Path,TC_DeleteAccountTest.Sheet_Name,
                                                    total_row_after_addition,2)
     print("Account Id to delete is :",account_id_to_delete)
     return account_id_to_delete
def test_2menu_click_Validation_in_sequence(setup):
    print("2menu_click_Validation_in_sequence called........")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.close_popup(driver)
    dict_menu = {
        "Manag": "Manager",
        "New Cust": "New Customer",
        "Edit Cust": "Edit Customer",
        "Delete Cust": "Delete Customer",
        "New Acc": "new account",
        "Edit Acc": "Edit Account",
        "Delete Acc": "Delete Account",
        "Deposit": "Deposit",
        "Withdrawal": "Withdrawal",
        "Fund Transfer": "Fund transfer",
        "Change Pass": "******",
        "Balance Enq": "Balance Enquiry",
        "Mini State": "Mini Statement",
        "Customised State": "Customized Statement"
    }

    TC_MenuClickInSequenceTest.menu_click_sequence(driver, dict_menu)
    BankAPP_CommonFunctions.logout(driver)
def test_7edit_account(setup):
    print("7edit_account called........")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.close_popup(driver)
    BankAPP_CommonFunctions.click_menu_by_partial_link_text(
        driver, "Edit Acc", "Edit Account")
    acc_id = BankAPP_CommonFunctions.get_cust_id_frm_repo(
        "LastAdded_AccountID_CustID.txt", 1)
    searched = TC_EditAccountTest.search_account_BYID(driver, acc_id)
    print(searched)
    TC_EditAccountTest.edit_account_type(driver)

    # Click continue
    driver.find_element_by_xpath(
        "//*[@id='account']/tbody/tr[11]/td/a").click()
    driver.implicitly_wait(1)
    BankAPP_CommonFunctions.logout(driver)
def test_5delete_customer(setup):
    print("5delete_customer called..............")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.click_menu_by_partial_link_text(
        driver, "Delete Cust", "Delete Customer")
    TC_DeleteCustomerTest.search_cust_BYID_Delete(driver, "19943", "Yes")
    BankAPP_CommonFunctions.logout(driver)
def test_6add_account(setup):
    print("6add_account called............")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.close_popup(driver)
    BankAPP_CommonFunctions.click_menu_by_perform_mouse_action(
        driver, "New Acc", "new account")
    cust_id = BankAPP_CommonFunctions.get_cust_id_frm_repo(
        "LastAdded_CustID.txt", 0)
    account_type, initial_amt = TC_AddAccountTest.add_account_details(
        driver, cust_id, "Current", 3000)
    print(account_type, initial_amt)
    TC_AddAccountTest.validate_account_info(driver, account_type, initial_amt)

    # Click continue
    driver.find_element_by_xpath(
        "//*[@id='account']/tbody/tr[11]/td/a").click()
    driver.implicitly_wait(1)
    BankAPP_CommonFunctions.logout(driver)
def test_4edit_customer(setup):
    print("4edit_customer................")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.click_menu_by_partial_link_text(
        driver, "Edit Cust", "Edit Customer")
    cust_id_modify = BankAPP_CommonFunctions.get_cust_id_frm_repo(
        "LastAdded_CustID.txt", 0)
    bool_true = TC_EditCustmerTest.search_cust_BYID(driver, cust_id_modify)
    print("ID has Searched?:", bool_true)

    TC_EditCustmerTest.edit_address(driver, cust_id_modify)
    # Click Continue
    driver.find_element_by_xpath(
        "//*[@id='customer']/tbody/tr[14]/td/a").click()
    driver.implicitly_wait(1)
    BankAPP_CommonFunctions.logout(driver)
def test_3add_customer(setup):
    print("3add_customer called..........")
    BankAPP_CommonFunctions.login_bankApp(driver,
                                          BankAPP_CommonFunctions.username,
                                          BankAPP_CommonFunctions.Password)
    BankAPP_CommonFunctions.click_menu_by_partial_link_text(
        driver, "New Cust", "New Customer")
    TC_AddCustomerTest.add_customer(driver, "M")
    TC_AddCustomerTest.validate_custinfo(driver)

    # Click Continue
    driver.find_element_by_xpath(
        "//*[@id='customer']/tbody/tr[14]/td/a").click()
    driver.implicitly_wait(1)
    BankAPP_CommonFunctions.logout(driver)
 def tearDownClass(cls):
     BankAPP_CommonFunctions.close_popup(cls.driver)
     # BankAPP_CommonFunctions.logout(cls.driver)
     cls.driver.implicitly_wait(1)
    def login_with_diff_credentials(driver, excel_path, excel_sheet, app_url):
        rows = Excelutility.get_row_count(excel_path, excel_sheet)
        # self.site_open()

        for row in range(2, rows + 1):
            print(row)
            username = Excelutility.read_data(excel_path, excel_sheet, row, 1)
            print("Current username:"******"Current Password:"******"uid").send_keys(username)
            driver.find_element_by_name("password").send_keys(password)
            time.sleep(1)
            error = "Shri"
            try:
                driver.find_element_by_xpath(
                    "/html/body/form/table/tbody/tr[3]/td[2]/input[1]").click(
                    )
                time.sleep(1)
                if BankAPP_CommonFunctions.get_modal_alert(driver):
                    error = driver.switch_to.alert.text
                    driver.switch_to.alert.accept()
                    print("Login Failed with :", error)
                    Excelutility.write_data(excel_path, excel_sheet, row, 3,
                                            "Test Failed")
                else:
                    if "Guru99 Bank Manager HomePage" in driver.title:
                        print("Login is successful")
                        Excelutility.write_data(excel_path, excel_sheet, row,
                                                3, "Test Passed")
                    else:
                        print("Failed to login")
                        Excelutility.write_data(excel_path, excel_sheet, row,
                                                3, "Test Failed")
            except Exception as e:
                print('Error on line {}'.format(sys.exc_info()[-1].tb_lineno),
                      type(e).__name__, e)
                # print("Failed to login as", error)
                Excelutility.write_data(excel_path, excel_sheet, row, 3,
                                        "Test Failed")
                driver.refresh()
                driver.get(app_url)
                driver.set_page_load_timeout(10)
            finally:
                print("Completed Iteration with excel row no :", row)

            if "User or Password is not valid" not in error:
                BankAPP_CommonFunctions.close_popup(driver)
                driver.execute_script(
                    "window.scrollBy(0,document.body.scrollHeight)")
                time.sleep(1)
                BankAPP_CommonFunctions.logout(driver)

    # def test_validationNavigation(self):
    #     self.login_with_diff_credentials(self.driver,self.Path,self.SheetName,self.url)

    # @classmethod
    # def tearDownClass(cls):
    #     cls.driver.close()


# if __name__ == "__main__":
#     unittest.main()
    def menu_click_sequence(driver,dict_menu):
        try:
            for key in dict_menu:
                print("Key:",key)
                if key == "New Acc" or key == "Deposit" or key == "Withdrawal" or key == "Fund Transfer":
                    print(dict_menu[key])
                    BankAPP_CommonFunctions.click_menu_by_perform_mouse_action(driver,key,str(dict_menu[key]))
                else:
                    if key == "Delete Acc":
                        driver.execute_script("window.scrollBy(0,1000)", "")
                        time.sleep(2)
                    print("Value:",dict_menu[key])
                    BankAPP_CommonFunctions.click_menu_by_partial_link_text(driver,key,str(dict_menu[key]))
                BankAPP_CommonFunctions.close_popup(driver)
        except Exception as e:
            print("Exception found in menu_click_sequence method",type(e).__name__)
            print('Error in menu_click_sequence method on line {}'.format(sys.exc_info()[-1].tb_lineno),type(e).__name__,e)

    # def test_menu_click_Validation_InSequence(self):
    #     try:
    #         self.menu_click_sequence(self.driver,self.dict_menu)

            '''self.click_menu_by_partial_link_text("Manag","Manager")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("New Cust", "New Customer")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Edit Cust", "Edit Customer")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Delete Cust", "Delete Customer")
            # BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_perform_mouse_action("New Acc", "new account")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Edit Acc", "Edit Account")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Delete Acc", "Delete Account")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.driver.execute_script("window.scrollBy(0,1000)", "")
            time.sleep(2)

            self.click_menu_by_perform_mouse_action("Deposit", "Deposit")  # Amount Deposit Form
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_perform_mouse_action("Withdrawal", "Withdrawal")  # Amount Withdrawal Form
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_perform_mouse_action("Fund Transfer", "Fund transfer")  # Fund transfer
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Change Pass", "Change Password")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Balance Enq", "Balance Enquiry")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Mini State", "Mini Statement")
            BankApp_CommonFunctons.close_popup(self.driver)

            self.click_menu_by_partial_link_text("Customised State", "Customized Statement")
            BankApp_CommonFunctons.close_popup(self.driver)'''

        # except Exception as e:
        #     print("Exception from Menu Click in Sequence:", type(e).__name__)
        #     print('Error on line {}'.format(sys.exc_info()[-1].tb_lineno), type(e).__name__, e)

    # @classmethod
    # def tearDownClass(cls):
    #     BankAPP_CommonFunctions.logout(cls.driver)
    #     cls.driver.close()


# if __name__ == "__main__":
#   unittest.main()