def logintoapplication(self): log = Logger.getlogger() try: self.driver.get(PropertyManager.getconfigdata("basicurl")) self.driver.implicitly_wait(3) self.driver.maximize_window() credentials = ExcelUtils.readdata("Testdata.xlsx", "Credentials", 2) userNames = ExcelUtils.getdata(credentials, "Username") passwords = ExcelUtils.getdata(credentials, "Password") WaitUtilities.waitforpagetitleis(self.driver, "Address Book - Sign In", 5) signinbtn = self.driver.find_element(*LoginPage.obj_signin) WaitUtilities.waitForElementVisible(self.driver, LoginPage.obj_signin, 5) signinbtn.click() username = self.driver.find_element(*LoginPage.obj_username) password = self.driver.find_element(*LoginPage.obj_password) loginbtn = self.driver.find_element(*LoginPage.obj_loginbtn) WaitUtilities.waitForElementVisible(self.driver, LoginPage.obj_username, 5) username.send_keys(userNames) password.send_keys(passwords) loginbtn.click() flag = WaitUtilities.waitforpagetitleis(self.driver, "Address Book", 5) assert flag, "should be Login to Application.::Successfully Login to Application." log.info("Successfully Login to Application.") except Exception as e: log.error("Failed to Login to Application.", exc_info=True)
def logoutfromapplication(self): log = Logger.getlogger() try: logoutbtn = self.driver.find_element(*HomePage.obj_signout) logoutbtn.click() flag = WaitUtilities.waitforpagetitleis(self.driver, "Address Book - Sign In", 5) if flag: Reporter.passed( self.driver, "should be Logout from Application.::Successfully Logout from Application." ) log.info("Successfully Logout from Application.") else: assert False except AssertionError as e: Reporter.failed( self.driver, "should be Logout from Application.::Failed to Logout from Application." ) log.error("Failed to Logout from Application.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def deleteAddressDetails(self): log = Logger.getlogger() try: deletebtn = self.driver.find_element(*AddressPage.obj_deletebtn) deletebtn.click() WaitUtilities.waitForAlertIsPresent(self.driver, 5) Alerts = self.driver.switch_to.alert Alerts.accept() WaitUtilities.waitForElementVisible(self.driver, AddressPage.obj_successmsg, 5) successmsg = self.driver.find_element(*AddressPage.obj_successmsg) actualmsg = successmsg.text if actualmsg == "Address was successfully destroyed.": Reporter.passed( self.driver, "Address should be successfully Deleted.::Address is successfully Deleted." ) log.info("Address Details is Deleted successfully") else: assert False except AssertionError as e: Reporter.failed( self.driver, "Address should be Deleted.::Address is not Deleted.") log.info("Address Details is not deleted successfully") except Exception as e: log.error("Exception Occurred", exc_info=True)
def verifyautosuggestioncheckboxselect(self, name): log = Logger.getlogger() try: AutoSuggest = self.driver.find_element(*AutomationPracticePage.obj_dynamicinput) AutoSuggest.clear() AutoSuggest.send_keys(name) WaitUtilities.waitForElementVisible(self.driver, (By.XPATH, "//ul[contains(@class,'ui-menu')]/li/div[text()='"+name+"']"), 5) AutoSuggestValue = self.driver.find_element_by_xpath("//ul[contains(@class,'ui-menu')]/li/div[text()='"+name+"']") AutoSuggestValue.click() log.info("Value is Entered in Auto Suggestion Input Box") select = Select(self.driver.find_element(*AutomationPracticePage.obj_dropdown)) AllOptions = select.options for i in AllOptions: log.info(i.text) select.select_by_value("option3") CheckBoxes = self.driver.find_elements(*AutomationPracticePage.obj_checkbox) for checkbox in CheckBoxes: checkbox.click() log.info(checkbox.text) if not False: Reporter.passed(self.driver, "CheckBox should be selected::CheckBox Button is Selected") else: assert False except AssertionError as e: Reporter.failed(self.driver, "CheckBox should be selected::CheckBox is not selected.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def verifyalertshowhidetabledata(self): log = Logger.getlogger() try: AlertInputBox = self.driver.find_element(*AutomationPracticePage.obj_alertinputbox) AlertInputBox.clear() AlertInputBox.send_keys("Nagesh") AlertBtn = self.driver.find_element(*AutomationPracticePage.obj_alertbtn) AlertBtn.click() WaitUtilities.waitForAlertIsPresent(self.driver, 5) Alerts = self.driver.switch_to.alert log.info("Alert Text is "+Alerts.text+"") Alerts.accept() DisplayedElement = self.driver.find_element(*AutomationPracticePage.obj_dispelement) log.info("CSS Value "+DisplayedElement.value_of_css_property("font-size")+"") HideBtn = self.driver.find_element(*AutomationPracticePage.obj_hidebtn) HideBtn.click() log.info("Clicked on Hide Button") ShowBtn = self.driver.find_element(*AutomationPracticePage.obj_showbtn) ShowBtn.click() if DisplayedElement.is_displayed(): Reporter.passed(self.driver, "InputBox should be Displayed when clicked on Show Button::InputBox is Displayed when clicked on Show Button") else: assert False log.info("Clicked on Show Button ") TableElement = self.driver.find_element(*AutomationPracticePage.obj_table) TableHeader = TableElement.find_elements_by_xpath("th") for i in TableHeader: log.info("Table header " + i.text) TableRow = self.driver.find_elements(*AutomationPracticePage.obj_tabledata) for j in TableRow: log.info("Table Row data " + j.text) except AssertionError as e: Reporter.failed(self.driver, "InputBox should be Displayed when clicked on Show Button:InputBox is not Displayed when clicked on Show Button.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def getconfigdata(propertyname): log = Logger.getlogger() try: configs = Properties() with open(path, 'rb') as config_file: configs.load(config_file) return configs.get(propertyname).data except Exception as e: log.exception("Exception Occurred", exc_info=True)
def getchromeoptions(): log = Logger.getlogger() try: chrome_options = Options() chrome_options.add_experimental_option( "prefs", {"download.default_directory": "E:\Export"}) #chrome_options.add_argument("--headless") chrome_options.add_argument("--start-maximized") chrome_options.add_argument('--disable-notifications') return chrome_options except Exception as e: log.exception("Exception Occurred", exc_info=True)
def test_first(self): log = Logger.getlogger() driver = BrowserFactory.getdriver() driver.get(PropertyManager.getconfigdata("url")) log.info("-----------Navigating to URL " + PropertyManager.getconfigdata("url") + "-------------") driver.implicitly_wait(3) log.info("implicitly Wait is set to 3 Sec") driver.maximize_window() log.info("-----------Window is Maximized.-------------") self.AutomationPracticePage_Object.verifyradiobtnisselectedornot()
def waitforpagetitleis(driver, title, timeout): flag = False log = Logger.getlogger() try: wait = WebDriverWait(driver, timeout) flag = wait.until(expected_conditions.title_is(title)) log.info("-----------Page with Title "+title+" is opened.-------------") flag = True except Exception as e: log.error("----------Page with Title "+title+" is not opened.---------") return flag
def waitForWindowIsPresent(driver, timeout): flag = False log = Logger.getlogger() try: wait = WebDriverWait(driver, timeout) Element = wait.until(expected_conditions.number_of_windows_to_be(2)) log.info("-----------New Window is Opened.-------------") flag = True except Exception as e: log.error("----------New Window is Not Opened.---------") return flag
def waitForAlertIsPresent(driver, timeout): flag = False log = Logger.getlogger() try: wait = WebDriverWait(driver, timeout) Element = wait.until(expected_conditions.alert_is_present()) log.info("-----------Alert Popup is Visible.-------------") flag = True except Exception as e: log.error("----------Alert Popup is Not Visible.---------") return flag
def setup(request): try: log = Logger.getlogger() browser_name = request.config.getoption("browser_name") BrowserFactory.setdriver(browser_name) log.info(browser_name + " Browser is invoked.") BaseTest.init_page() yield BrowserFactory.getdriver().quit() log.info(browser_name + " Browser is Closed.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def test_menuselect(self): log = Logger.getlogger() driver = BrowserFactory.getdriver() driver.get(PropertyManager.getconfigdata("tooltipurl")) log.info("-----------Navigating to URL " + PropertyManager.getconfigdata("tooltipurl") + "-------------") driver.implicitly_wait(3) log.info("implicitly Wait is set to 3 Sec") driver.maximize_window() log.info("-----------Window is Maximized.-------------") self.ToolTipTextPage_object.verifytooltiptext()
def waitForElementVisible(driver, element, timeout): flag = False log = Logger.getlogger() try: wait = WebDriverWait(driver, timeout) Element = wait.until(expected_conditions.visibility_of_element_located(element)) if Element is not None: log.info("-----------Element is Visible.-------------") flag = True except Exception as e: log.error("----------Element is Not Visible.---------") return flag
def getfirefoxoptions(): log = Logger.getlogger() try: firefox_options = firefox.options.Options() #firefox_options.add_argument('-headless') firefox_options.set_preference("browser.download.folderList", 2) firefox_options.set_preference( "browser.download.manager.showWhenStarting", False) firefox_options.set_preference("browser.download.dir", "E:\Export") firefox_options.set_preference( "browser.helperApps.neverAsk.saveToDisk", "application/octet-stream,application/vnd.ms-excel,image/jpeg") return firefox_options except Exception as e: log.exception("Exception Occurred", exc_info=True)
def test_verifyaddress(self): log = Logger.getlogger() driver = BrowserFactory.getdriver() driver.get(PropertyManager.getconfigdata("basicurl")) log.info("-----------Navigating to URL " + PropertyManager.getconfigdata("basicurl") + "-------------") driver.implicitly_wait(3) log.info("implicitly Wait is set to 3 Sec") driver.maximize_window() log.info("-----------Window is Maximized.-------------") self.LoginPage_object.logintoapplication() self.AddressPage_object.fillAddressDetails() self.AddressPage_object.verifyAddressDetails() self.AddressPage_object.deleteAddressDetails() self.Homepage_object.logoutfromapplication()
def verifywindoframewswitchtooltip(self): log = Logger.getlogger() sflag = False try: parentwindowhanlde = self.driver.current_window_handle openwindowbutton = self.driver.find_element(*AutomationPracticePage.obj_openwindow) self.driver.execute_script("arguments[0].click();", openwindowbutton) windowhandles = set(self.driver.window_handles) WaitUtilities.waitForWindowIsPresent(self.driver, 10) for windowhandle in windowhandles: self.driver.switch_to.window(windowhandle) if self.driver.title == "QA Click Academy | Selenium,Jmeter,SoapUI,Appium,Database testing,QA Training Academy": log.info("Switched to Child Window") sflag = True self.driver.close() break self.driver.switch_to.window(parentwindowhanlde) log.info("Switched back to Parent Window") Reporter.info("Should be Switched to Child Window::Switched to Child Window Successfully.") self.driver.switch_to.frame("courses-iframe") log.info("Switched to Frame Successfully") homelink = self.driver.find_element(*AutomationPracticePage.obj_homelinkbtn) self.driver.execute_script("arguments[0].scrollIntoView(false);", homelink) self.driver.switch_to.parent_frame() log.info("Switched to Parent Frame Successfully") action = ActionChains(self.driver) mousehoverelement = self.driver.find_element(*AutomationPracticePage.obj_mousehover) action.move_to_element(mousehoverelement).click_and_hold(mousehoverelement).perform() WaitUtilities.waitForElementVisible(self.driver, AutomationPracticePage.obj_tooltiptext, 5) tooltiptexts = self.driver.find_elements(*AutomationPracticePage.obj_tooltiptext) for tooltipelement in tooltiptexts: log.info("Tooltip Text " + tooltipelement.text) except AssertionError as e: Reporter.failed(self.driver, "Should be Switched to Child Window::Not Switched to Child Window.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def logintoapplication(self): log = Logger.getlogger() try: credentials = ExcelUtils.readdata("Testdata.xlsx", "Credentials", 2) userNames = ExcelUtils.getdata(credentials, "Username") passwords = ExcelUtils.getdata(credentials, "Password") WaitUtilities.waitforpagetitleis(self.driver, "Address Book - Sign In", 5) signinbtn = self.driver.find_element(*LoginPage.obj_signin) WaitUtilities.waitForElementVisible(self.driver, LoginPage.obj_signin, 5) signinbtn.click() username = self.driver.find_element(*LoginPage.obj_username) password = self.driver.find_element(*LoginPage.obj_password) loginbtn = self.driver.find_element(*LoginPage.obj_loginbtn) WaitUtilities.waitForElementVisible(self.driver, LoginPage.obj_username, 5) username.send_keys(userNames) password.send_keys(passwords) loginbtn.click() flag = WaitUtilities.waitforpagetitleis(self.driver, "Address Book", 5) if flag: Reporter.passed( self.driver, "should be Login to Application.::Successfully Login to Application." ) log.info("Successfully Login to Application.") else: assert False except AssertionError as e: Reporter.failed( self.driver, "should be Login to Application.::Failed to Login to Application." ) log.error("Failed to Login to Application.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def verifyAddressDetails(self): log = Logger.getlogger() try: addressbtn = self.driver.find_element(*AddressPage.obj_addressbtn) addressbtn.click() WaitUtilities.waitForElementVisible(self.driver, AddressPage.obj_newaddressbtn, 5) tablerow = self.driver.find_element(*AddressPage.obj_tablerow) tabledata = tablerow.find_elements_by_xpath("td") fname = tabledata[0].text lname = tabledata[1].text city = tabledata[2].text state = tabledata[3].text MyDict = { "First Name": fname, "Last Name": lname, "City": city, "State": state } ExcelUtils.writedata("Testdata.xlsx", "Address", 3, MyDict) if fname == "Nagesh": Reporter.passed( self.driver, "Address Details should be verified successfully.::Address Details is verified successfully." ) log.info("Address Details is verified successfully") else: assert False except AssertionError as e: Reporter.failed( self.driver, "Address should be verified.::Address is not verified.") log.error("Address Details is not verified successfully") except Exception as e: log.error("Exception Occurred", exc_info=True)
def killbrowserdriver(browesrname): log = Logger.getlogger() if browesrname == "Chrome": driverprocess = "chromedriver.exe" elif browesrname == "Firefox": driverprocess = "firefox.exe" else: log.warn("Entered Wrong Browser name") try: code = os.system("taskkill /F /T /IM " + driverprocess) if code == 0: log.info("Driver process " + driverprocess + " is killed successfully.") else: log.info("Driver process " + driverprocess + " is not exists.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def selenium_browser_setdriver(context): # -- SETUP-FIXTURE PART: logger = Logger.getlogger() browser_name = context.config.userdata.get('BrowserName') Utilities.killbrowserdriver(browser_name) if browser_name == "Chrome": logger.info(browser_name + " Browser option is selected") context.driver = webdriver.Chrome( executable_path=ChromeDriverManager().install(), options=OptionsManager.getchromeoptions()) elif browser_name == "Firefox": logger.info(browser_name + " Browser option is selected") context.driver = webdriver.Firefox( executable_path=GeckoDriverManager().install(), options=OptionsManager.getfirefoxoptions()) else: logger.info("Entered Wrong Browser name") yield context.driver
def verifymenuselection(self): log = Logger.getlogger() sflag = False try: WaitUtilities.waitforpagetitleis( self.driver, "Free QA Automation Tools Tutorial for Beginners with Examples", 5) tutorial = self.driver.find_element( *MenuSelectionPage.obj_tutorial) backendtesting = self.driver.find_element( *MenuSelectionPage.obj_backendtesting) restassured = self.driver.find_element( *MenuSelectionPage.obj_restassured) action = ActionChains(self.driver) action.move_to_element(tutorial).perform() WaitUtilities.waitForElementVisible( self.driver, MenuSelectionPage.obj_backendtesting, 5) action.move_to_element(backendtesting).click_and_hold().perform() WaitUtilities.waitForElementVisible( self.driver, MenuSelectionPage.obj_restassured, 5) action.move_to_element(restassured).click().perform() sflag = WaitUtilities.waitforpagetitleis( self.driver, "Rest Assured Tutorial for REST API Automation Testing", 5) if sflag: Reporter.passed( self.driver, "RestAssured Menu should be selected::RestAssured Menu is selected." ) else: assert False except AssertionError as e: Reporter.failed( self.driver, "RestAssured Menu should be selected::RestAssured Menu is not selected." ) except Exception as e: log.error("Exception Occurred", exc_info=True)
def setdriver(browser_name): try: log = Logger.getlogger() global driver Utilities.killbrowserdriver(browser_name) if browser_name == "Chrome": log.info(browser_name + " Browser option is selected") driver = webdriver.Chrome( executable_path=ChromeDriverManager().install(), options=OptionsManager.getchromeoptions()) elif browser_name == "Firefox": log.info(browser_name + " Browser option is selected") driver = webdriver.Firefox( executable_path=GeckoDriverManager().install(), options=OptionsManager.getfirefoxoptions()) else: log.warn("Entered Wrong Browser name") except Exception as e: log.error("Exception Occurred", exc_info=True)
def verifyradiobtnisselectedornot(self): log = Logger.getlogger() sflag = False try: RadioButtons = self.driver.find_elements(*AutomationPracticePage.obj_radiobtns) for radiobutton in RadioButtons: if radiobutton.get_attribute("value") == "radio2": radiobutton.click() log.info("Radio Button is Selected") sflag = True break if not sflag: Reporter.passed(self.driver, "Radiobutton should be selected::Radio Button is Selected") else: assert False except AssertionError as e: Reporter.failed(self.driver, "Radiobutton should be selected::Radiobutton is not selected.") except Exception as e: log.error("Exception Occurred", exc_info=True)
def readdata(filename, sheetname, rowno): log = Logger.getlogger() try: path = os.getcwd() projectroot = os.path.dirname(path) path = projectroot + "\\resources\\testdata\\"+filename workbook = openpyxl.load_workbook(path) sheet = workbook[sheetname] mydict = {} for colno in range(1, sheet.max_column + 1): mydict[sheet.cell(row=1, column=colno).value] = sheet.cell(row=rowno, column=colno).value log.info("Data is read successfully.") return mydict except Exception as e: log.error("Exception Occurred", exc_info=True) finally: workbook.close() log.info("Workbook closed succesfully")
def writedata(filename, sheetname, rowno, mydict): log = Logger.getlogger() try: path = os.getcwd() projectroot = os.path.dirname(path) path = projectroot + "\\resources\\testdata\\" + filename workbook = openpyxl.load_workbook(path) sheet = workbook[sheetname] for colno in range(1, sheet.max_column + 1): key = str(sheet.cell(row=1, column=colno).value) if key in mydict: sheet.cell(row=rowno, column=colno).value = "" sheet.cell(row=rowno, column=colno).value = mydict[key] log.info("Data is write successfully.") except Exception as e: log.error("Exception Occurred", exc_info=True) finally: workbook.save(path) workbook.close() log.info("Workbook closed successfully.")
def verifytooltiptext(self): log = Logger.getlogger() sflag = False try: WaitUtilities.waitforpagetitleis( self.driver, "Selenium Practise: How to automate tooltip in Selenium webdriver", 5) hoverme = self.driver.find_element(*ToolTipTextPage.obj_hoverme) tooltiptext = self.driver.find_element( *ToolTipTextPage.obj_tooltiptext) action = ActionChains(self.driver) action.move_to_element(hoverme).click_and_hold().perform() WaitUtilities.waitForElementVisible( self.driver, ToolTipTextPage.obj_tooltiptext, 5) tooltipmsg = tooltiptext.text if tooltipmsg == "Tooltip text": Reporter.passed( self.driver, "ToolTip Text should be 'Tooltip text'.::ToolTip Text is 'Tooltip text'." ) else: assert False except AssertionError as e: Reporter.failed( self.driver, "ToolTip Text should be 'Tooltip text'.::ToolTip Text is not 'Tooltip text'." ) except Exception as e: log.error("Exception Occurred", exc_info=True)
def User_is_able_to_login_to_application(context): logger = Logger.getlogger() logger.info( "User is able to login to application with valid credentials Step is called." )
def after_feature(context, feature): logger = Logger.getlogger() logger.info(f"After scenario {feature} is called")
def before_feature(context, feature): logger = Logger.getlogger() logger.info(f"Before Feature {feature} is called")