class TestHomePage(BaseClass): def test_submitForm(self, getData): log = self.getLogger() hp = HomePage(self.driver) self.EnterText(hp.nameTextBox(), getData["firstName"]) log.info("First name successfully entered") self.EnterText(hp.emailTextBox(), getData["lastName"]) log.info("last name successfully entered") self.EnterText(hp.passwordTextBox(), getData["pwd"]) log.info("Password entered successfully") self.clickOn(hp.iceCreamCheckBox()) log.info("Checked box clicked") self.clickOn(hp.employedRadioButton()) log.info("Employed selected") self.selectByVibleText(hp.genderDropDown(), getData["gender"]) log.info("Gender selected") self.EnterText(hp.DOBTextBox(), getData["DOB"]) log.info("Provided Data of birth") self.clickOn(hp.submitButton()) log.info("Submit button Clicked") alertMsg = self.getTextOfElement(hp.alertMsgText()) assert ("Success" in alertMsg) log.info("Successfully validated") @pytest.fixture(params=HomePageData.getTestData("TC_1")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): homepage = HomePage(self.driver) homepage.getName().send_keys(getData["firstName"]) # time.sleep(5) # self.driver.find_element_by_name("name").send_keys("ritesh") homepage.getEmail().send_keys(getData["lastName"]) homepage.getPassword().send_keys("dceeevwgmail.com") homepage.getCheckBox().click() select = Select(homepage.getGender()) select.select_by_visible_text(getData["gender"]) homepage.getStatus().click() homepage.getSubmit().click() time.sleep(5) self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData()) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): homepage = HomePage(self.driver) homepage.getName().send_keys(getData["name"]) #keyname homepage.getEmail().send_keys(getData["email"]) homepage.getPassword().send_keys(getData["pwd"]) homepage.getChkBox().click() self.selectDropdown(homepage.getGender(), getData["gender"]) radioButtons = homepage.getJobStatus() for radioButton in radioButtons: # print(radioButton.text) if radioButton.text == getData["status"]: radioButton.click() homepage.getDob().send_keys(getData["dob"]) homepage.getSubmit().click() msg = homepage.getMsg().text print(msg) assert "The Form has been submitted successfully!." in msg, "test failed" self.driver.get_screenshot_as_file("finalscreen.png") self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmisson(self, getData): log = self.test_getLogger() homePage = HomePage(self.driver) homePage.getName().send_keys(getData["FirstName"]) log.info("First Name is "+getData["FirstName"]) homePage.getEmail().send_keys(getData["Email"]) homePage.getCheckBox().click() sel = Select(homePage.getGender()) sel.select_by_visible_text(getData["gender"]) homePage.Submit().click() message = homePage.getAlertMessage().text # Assert - It always expect condition as true assert 'success' in message # substring in String self.driver.refresh() #Create a ficture which will fetch data from TestData Folder using Fixture and use here @pytest.fixture(params=HomePageData.getTestData("TestCase1")) def getData(self, request): return request.param
class TestHomePage(BaseClassA): def test_formSubmission(self, getData): log = self.test_getLogger() homepage = HomePage(self.driver) log.info("Entering data for form submission") log.info("Name is" + getData["Firstname"]) homepage.getname().send_keys(getData["Firstname"]) homepage.getEmail().send_keys(getData["Email"]) homepage.getPassword().send_keys("123456") homepage.getCheckMe().click() self.selectOptionbyVisibleText(homepage.getGender(), getData["Gender"]) #======================================================================= # mygender=Select(homepage.getGender()) # mygender.select_by_visible_text("Female") #======================================================================= homepage.getStatus().click() homepage.getDateofBirth().send_keys("12/03/1991") homepage.getSubmit().click() message = homepage.getAlertMsg().text #for substring match assert "Success" in message #assert "Success! The Form has been submitted successfully!." == message self.driver.refresh() #Passing data by tuple & dictionary @pytest.fixture(params=[("Shivangi", "*****@*****.**", "Female"), ("Krishna", "*****@*****.**", "Male")]) @pytest.fixture(params=HomePageData.getTestData("TestCase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): # def test_formSubmission(self): # Submissionpage = submissionPage(self.driver) # Submissionpage.getName().send_keys("Anil") # # self.driver.find_element_by_name('name').send_keys('Anil') # Submissionpage.getEmail().send_keys("*****@*****.**") # # self.driver.find_element_by_xpath("//input[@name='email']").send_keys("*****@*****.**") # Submissionpage.getPassword().send_keys("anil5") # # self.driver.find_element_by_css_selector("input[@type='password']").send_keys("anil5") # Submissionpage.getCheckBox().click() # # self.driver.find_element_by_id("exampleCheck1").click() # # sel = Select(Submissionpage.getGender()) # # sel = Select(self.driver.find_element_by_id("exampleFormControlSelect1")) # self.selectGender(Submissionpage.getGender(), "Male") # # sel.select_by_visible_text("Male") # Submissionpage.getSubmit().click() # # self.driver.find_element_by_xpath("//input[contains(@class, 'success')]").click() # message = Submissionpage.getMessage().text # # message = self.driver.find_element_by_css_selector("div[class*='dismiss']").text # print(message) # self.driver.get_screenshot_as_file("photo1.png") # assert "success" in message # # the above code for just passing the keys manually # The below code is for how to call the data by using the Lists, Tuples and dictionaries def test_formSubmission(self, getData): log = self.getLogger() Submissionpage = submissionPage(self.driver) # Submissionpage.getName().send_keys(getData[0]) # Submissionpage.getEmail().send_keys(getData[1]) log.info("First name is " + getData["firstname"]) Submissionpage.getName().send_keys(getData["firstname"]) Submissionpage.getEmail().send_keys(getData["email"]) Submissionpage.getPassword().send_keys("anil5") Submissionpage.getCheckBox().click() # self.selectGender(Submissionpage.getGender(), getData[2]) self.selectGender(Submissionpage.getGender(), getData["gender"]) Submissionpage.getSubmit().click() message = Submissionpage.getMessage().text print(message) self.driver.get_screenshot_as_file("photo1.png") print("Anil") assert "success" in message self.driver.refresh() # with tuples under list # @pytest.fixture(params=[("Anil", "*****@*****.**", "Male"), ("chinni", "*****@*****.**", "Male")]) # with dictionaries under list # @pytest.fixture(params=[{"firstname":"Anil", "email":"*****@*****.**", "gender":"Male"}, {"firstname":"Chinni", "email":"*****@*****.**", "gender":"Female"}]) # @pytest.fixture(params=HomePageData.test_data) @pytest.fixture(params=HomePageData.getTestData("TestCase4")) def getData(self, request): return request.param
class TestHomePage(BaseClass): # @pytest.mark.usefixtures("getData") def test_formSubmission(self, getData): log = self.getLogger() # driver = webdriver.Chrome(executable_path="/Users/ami23772/Downloads/Study/Selenium_with_Python/chromedriver") # driver.get("https://rahulshettyacademy.com/angularpractice/") homepage = HomePage(self.driver) homepage.getName().send_keys(getData["firstname"]) homepage.getEmail().send_keys(getData["email"]) homepage.getPassword().send_keys(getData["password"]) homepage.getCheckout().click() # dropdown = Select(self.driver.find_element_by_id("exampleFormControlSelect1")) """ This is very exhaustive way and not to say hardcoded homepage.getGender().select_by_visible_text("Female") time.sleep(1) homepage.getGender().select_by_visible_text("Male") We can make it more flexible and reusable by making it generic in BaseClass then call the method and pass text """ self.selectOptionByText(homepage.getGender(), getData["gender"]) radio = self.driver.find_elements_by_name("inlineRadioOptions") radio[1].click() # self.selectRadioOption(homepage.getEmploymentStatus(), "Employed") time.sleep(1) homepage.getDOB().send_keys(getData["birthdate"]) log.info("Entered data is: " + getData['firstname'] + " " + getData['email'] + " " + getData['gender'] + " " + getData['birthdate']) time.sleep(1) # from here we assert the page content and then submit the form then we will go to shop # assert driver.execute_script("return document.getElementsByName('name')[0].value") == "A B C" # assert driver.execute_script("return document.getElementsByName('email')[0].value") == "*****@*****.**" # assert driver.execute_script("return document.getElementById('exampleInputPassword1').value") != "" # assert driver.execute_script("return document.getElementById('exampleFormControlSelect1').value") == "Male" # assert radio[1].is_selected() # assert driver.execute_script("return document.getElementsByName('bday')[0].value") == "1999-12-21" homepage.getButton().click() time.sleep(1) log.info("Text after submission is: " + homepage.getMessage().text) assert "Success" in homepage.getMessage().text self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase1", "Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formsubmission(self, getData): driver.find_element_by_name("name").send_keys(getData[0]) dropdown = Select( driver.find_element_by_id("exampleFormControlSelect1")) dropdown.select_by_index(1) dropdown.select_by_visible_text("Male") driver.find_element_by_css_selector("input[value='Submit']").click() message = driver.find_element_by_css_selector( "[class*='alert-success']").text assert "successfdfdf" in message print("New Line") @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homePage = HomePage(self.driver) #log.info("First name is "+getData["firstname"]) homePage.getName().send_keys(getData["firstname"]) homePage.sendEmail().send_keys(getData["lastname"]) homePage.selectHomePageCheckBox().click() self.selectOptionByText(homePage.selectGender(), getData["gender"]) homePage.submitForm().click() alertText = homePage.verifySuccessMessage().text assert "success" in alertText self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getlogger() homepage = Homepage(self.driver) log.info("first name is" + (getData["firstname"])) homepage.getName().send_keys(getData["firstname"]) homepage.getEmail().send_keys(getData["email"]) homepage.getcheckBox().click() self.SelectOptionByText(homepage.getGender(), getData["gender"]) homepage.SubmitButton().click() message = homepage.SuccessMessage().text assert ("Success" in message) self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) log.info('First name is'+getData['firstname']) homepage.getName().send_keys(getData['firstname']) homepage.getEmail().send_keys(getData['lastname']) homepage.getCheck().click() self.selectOptionByText(homepage.getGender(),getData['gender']) homepage.getSubmit().click() alertText = homepage.getSuccessMessage().text assert ('Success' in alertText) self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData('Testcase2')) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): homepage = HomePage(self.driver) homepage.getNameField().send_keys(getData["firstname"]) homepage.getEmailField().send_keys(getData["email"]) homepage.getCheckMe().click() self.selectOptionByText(homepage.getGender(), getData["gender"]) homepage.getSubmitButton().click() alertText = homepage.displaySuccessMessage() assert "Success" in alertText self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) log.info("first_name is " + getData["first_name"]) homepage.getName().send_keys(getData["first_name"]) # driver.find_element_by_css_selector("[name='name']").send_keys("Tito") homepage.getEmail().send_keys(getData["last_name"]) # driver.find_element_by_name("email").send_keys("Novianto") homepage.getCheckBoxBtn().click() # driver.find_element_by_id("exampleCheck1").click() self.selectOptionByText(homepage.getGenderSel(), getData["gender"]) # sel = Select(homepage.getGenderSel()) # sel = Select(driver.find_element_by_id("exampleFormControlSelect1")) # sel.select_by_visible_text("Male") homepage.getSubmitBtn().click() # driver.find_element_by_xpath("//input[@value='Submit]").click() alertText = homepage.getAlertText().text # alertText = driver.find_element_by_css_selector("[class*='alert-success']").text assert ("Success" in alertText) #To solve the below problem, one solution can be as following self.driver.refresh() # Adding a seperated data input below in a list # If the list consist of multiple tuples of data set input # The test will be run as many as the data set input provided # e.g: 2 tuples input data set will be run twice # Rising problem: since it is run in the same browser, the input field will concat # e.g.: TitoRahul and NoviantoShetty #@pytest.fixture(params=HomePageData.test_homePageData) @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) log.info("Name is " + getData["name"]) #homePage.getName().send_keys(getData[0]) TUPLE DATA TYPE homepage.getName().send_keys(getData["name"]) #DICTIONARY DATA TYPE #homePage.getEmail().send_keys(getData[1]) TUPLE DATA TYPE log.info("Email is " + getData["email"]) homepage.getEmail().send_keys(getData["email"]) #DICTIONARY DATA TYPE #self.selectOptionByText(homePage.getGender(), getData[2]) TUPLE DATA TYPE log.info("Gender is " + getData["gender"]) self.selectOptionByText(homepage.getGender(), getData["gender"]) #DICTIONARY DATA TYPE # as dropdown code can be used in multiple tests so # make it generic and place the code in base class, the attributes of it are locator and text homepage.submitForm().click() alertText = homepage.getSuccessMessage().text assert "Success!" in alertText self.driver.refresh() # we are using refresh here because the url belongs to class and will execute only # once before the class therefore concatnating the data we are sending so by doing refresh we refresh the browser # this fixture is not common to all test cases therefore we will not write the code in conftest file, # this fixture is only for this page #@pytest.fixture(params= HomePageData.test_HomePage_data # params support both tuple and dictionary data type , above is an example of tuple and we address the data through indexes # where as dictionary datatype is key value pair like hashmaps/hashtables in java #dictionary data type is declared in{} @pytest.fixture(params= HomePageData.getTestData("Testcase2")) #data coming from testdata package def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmittion(self, getData): log = self.getLogger() homepage = HomePage(self.driver) log.info("First name is" + getData["Fname"]) homepage.getName().send_keys(getData["Fname"]) homepage.getEmail().send_keys(getData["Lname"]) homepage.getCheckbox().click() self.selectOptionByText(homepage.getDropdown(), getData["Gender"]) homepage.submitForm().click() print(homepage.getMessage().text) alertText = homepage.getMessage().text assert ("success" in alertText) self.driver.refresh() #@pytest.fixture(params=HomePageData.test_HomePage_data) @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class Testtwo(BaseClass): def test_formSubmission(self, getData): log = self.getloggingDemo() homepage = HomePage(self.driver) log.info("first name is " + getData["firstname"]) homepage.getName().send_keys(getData["firstname"]) homepage.getEmail().send_keys(getData["gender"]) homepage.getClickCheck().click() homepage.getClickCheck().click() self.selectoptionBytext(homepage.getDropdown(), getData["gender"]) homepage.submittForm().click() alertText = homepage.getsuccessmessage().text self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) homepage.getName().send_keys(getData["firstname"]) log.info("firstname is entered") # driver.find_element_by_name("name").send_keys("Ticvic") time.sleep(5) homepage.getEmail().send_keys(getData["lastname"]) log.info("lastname is entered") #driver.find_element_by_name("email").send_keys("*****@*****.**") time.sleep(3) #driver.find_element_by_id("exampleInputPassword1").send_keys("Password") homepage.getCheckBox().click() #it is reusable and define it in baseclass #sel = Select(homepage.getGender()) #sel.select_by_visible_text("Male") self.selectOptionByText(homepage.getGender(), getData["gender"]) log.critical("gender is selected") homepage.submitForm().click() alertText = homepage.getSuccessMessage().text #for refreshing and passing datas like data provider we use this. self.driver.refresh() assert ("Success" in alertText) #dropdown = Select(driver.find_element_by_id("exampleFormControlSelect1")) #dropdown.select_by_visible_text("Female") #time.sleep(5) #dropdown.select_by_index(0) #time.sleep(5) #driver.find_element_by_xpath("/html/body/app-root/form-comp/div/form/input").click() #time.sleep(3) #message = driver.find_element_by_class_name("alert-success").text #print(message) @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homePage = HomePage(self.driver) log.info("First Name is " + getData["fname"]) homePage.getName().send_keys(getData["fname"]) homePage.getEmail().send_keys(getData["email"]) homePage.clickCheckbox().click() self.selectOptionByText(homePage.dropDown(), getData["gender"]) homePage.submitForm().click() message = homePage.successText().text assert "success" in message self.driver.refresh() print(message) print("Yay all is good maga") print("Yay all is very good maga") @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) # log.info("Name:"+getData["firstname"]) homepage.getName().send_keys(getData["firstname"]) homepage.getemail().send_keys(getData["email"]) homepage.getPword().send_keys(getData["password"]) homepage.getCheckBox().click() self.selectOptionByText(homepage.getGender(), getData["gender"]) homepage.getCheckBox2().click() # dropdown.select_by_value() homepage.submitForm().click() message = homepage.getSuccessMessage().text assert ("success" in message) self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("TestCase1")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homePage = HomePage(self.driver) log.info("first name is " + getData["firstname"]) homePage.getName().send_keys(getData["firstname"]) homePage.getEmail().send_keys(getData["lastname"]) homePage.getCheckbox().click() # select class provides the methods for handling the options in dropdown # dropdown = Select(homePage.getDropDown()) # dropdown.select_by_visible_text('Female') # dropdown.select_by_index(0) self.selectOptionsByText(homePage.getDropDown(), getData["gender"]) homePage.getSubmitButton().click() message = homePage.getSuccessText().text assert 'success' in message self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): # driver = webdriver.Chrome(executable_path='C:\\chromedriver.exe') # driver.get('https://rahulshettyacademy.com/angularpractice/') log = self.getLogger() homepage = HomePage(self.driver) # driver.find_element_by_name('name').send_keys('Rahul') # driver.find_element_by_id('exampleCheck1').click() # driver.find_element_by_css_selector('Input[name = "name"]').send_keys('Rahul') # driver.find_element_by_name('email').send_keys('Shetty') # driver.find_element_by_xpath('//input[@type="submit"]').click() log.info('first name is ' + getData['firstname']) homepage.getName().send_keys(getData['firstname']) homepage.getEmail().send_keys(getData['lastname']) homepage.getCheckBox().click() # sel = Select(homepage.getGender()) # sel.select_by_visible_text('Male') self.selectOptionByText(homepage.getGender(), getData['gender']) homepage.submitButton().click() alertText = homepage.getSuccessMSG().text assert ('success' in alertText) self.driver.refresh() # print(driver.find_element_by_class_name('alert-success').text) # dropdown = Select(driver.find_element_by_id('exampleFormControlSelect1')) # dropdown.select_by_visible_text('Female') # dropdown.select_by_visible_text(0) # dropdown.select_by_value('') # message = driver.find_element_by_class_name('alert-success').text # assert 'success' in message @pytest.fixture(params=HomePageData.getTestData('Testcase2')) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): log = self.getLogger() homepage = HomePage(self.driver) log.info(getData) log.info("entering details into all the fields") homepage.getName().send_keys(getData["firstname"]) homepage.getEmail().send_keys(getData["Email"]) homepage.getPassword().send_keys(getData["password"]) homepage.getCheckbox().click() element = homepage.getGender() self.selectOptionByText(element, getData["gender"]) homepage.getRadioButton().click() homepage.getSuccessButton().click() alertText = homepage.getSuccessMsg().text log.info(alertText) assert "Success" in alertText self.driver.refresh() @pytest.fixture(params=HomePageData.getTestData("Testcase1")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formsubmission(self, getData): homepage = HomePage(self.driver) homepage.getName().send_keys(getData["FirstName"]) homepage.getUserName().send_keys(getData["UserName"]) homepage.getEmail().send_keys(getData["EmailId"]) homepage.getPassword().send_keys(getData["Pwd"]) homepage.getButton().click() self.selectDropDownOption(homepage.getDropDown(), "Female") homepage.getDropDownSelect().click() message = homepage.getAlertText().text assert "success" in message #@pytest.fixture(params=HomePageData.test_HomePage_data) #def getData(self, request): #return request.param @pytest.fixture(params=HomePageData.getTestData("TestCase2")) def getData(self, request): return request.param
class TestHomePage(Base_class): def test_formSubmission(self, getData): log = self.getLogger() homePage = HomePage(self.driver) #homePage.getName().send_keys(getData[0]) log.info("first name is " + getData["firstname"]) homePage.getName().send_keys(getData["firstname"]) #driver.find_element_by_css_selector("input[name='name']").send_keys("Suchithra") #driver.find_element_by_name("email").send_keys("*****@*****.**") homePage.getEmail().send_keys(getData["email"]) homePage.getPwdCheck().click() #driver.find_element_by_id("exampleCheck1").click() self.selectOptionByText(homePage.getGender(), getData["gender"]) homePage.getSubmit().click() #driver.find_element_by_xpath("//input[@type='submit']").click() # txt = driver.find_element_by_css_selector("[class*='alert-success']").text # txt = driver.find_element_by_class_name("alert-success").text #txt = driver.find_element_by_xpath("//*[contains(@class,'alert-success')]").text txt = homePage.getSuccess().text print(txt) assert "Success!" in txt self.driver.refresh() # @pytest.fixture(params=[("Suchi","*****@*****.**","Female"),("sarva","*****@*****.**", "Male")]) # def getData(self, request): # return request.param @pytest.fixture(params=HomePageData.getTestData("testcase2")) def getData(self, request): return request.param
class TestHomePage(BaseClass): def test_formSubmission(self, getData): print(getData) log = self.getLogger() homepage = HomePage(self.driver) log.info("get firstname is " + getData["Firstname"]) homepage.getName().send_keys(getData["Firstname"]) homepage.getMail().send_keys(getData["Mail"]) homepage.getPassword().send_keys(getData["Password"]) time.sleep(2) self.selectOptionByText(homepage.getGender(), getData["Gender"]) # dropdown.select_by_visible_text("Female") # dropdown.select_by_index(0) time.sleep(2) homepage.getExample().click() homepage.getSubmit().click() message = homepage.getSuccess().text assert "success" in message self.driver.refresh() # @pytest.fixture(params=[("ashida", "*****@*****.**", "ashida@123", "Female"), ("aslam", "*****@*****.**", "aslam@123" ,"Male")]) @pytest.fixture(params=HomePageData.getTestData("Testcase2")) def getData(self, request): return request.param
class TestOne(BaseClass): def test_e2e(self, getData, getPassword): self.driver.get("https://trello.com/") time.sleep(3) self.driver.maximize_window() time.sleep(3) ss = SS(self.driver) log = self.getLogger() log.info( "........................................Test Case Started.............................................." ) #Login in to application loginPage = LoginPage(self.driver) loginPage.clickLoginButton() # Title is verified title = loginPage.getTitle() log.info("Title of the Application" + title) assert title == "Log in to Trello" self.isLabelExist("Continue with Google") self.isLabelExist("Continue with Microsoft") self.isLabelExist("Continue with Apple") loginPage.enterEmail(getData["Email"]) loginPage.clickLoginAtlassian() time.sleep(3) loginPage.enterPassword(getPassword["password"]) ss.ScreenShot("login.png") loginPage.clickSubmit() time.sleep(3) #Create a new board ss.ScreenShot("dashboard.png") dashboard = DashboardPage(self.driver) dashboard.page_has_loaded() dashboard.clickAddButton() time.sleep(3) ss.ScreenShot("addBoard.png") dashboard.clickCreateBoard() time.sleep(3) ss.ScreenShot("createBoard.png") dashboard.addBoardTitle(getData["BoardName"]) time.sleep(3) dashboard.clickCreateBoard() time.sleep(5) dashboard.page_has_loaded() #Create Lists log.info("4 new lists are created") dashboard.enterListName(getData["List1"]) time.sleep(5) dashboard.clickAddListBtn() time.sleep(3) ss.ScreenShot("addList1.png") dashboard.enterListName(getData["List2"]) time.sleep(3) dashboard.clickAddListBtn() time.sleep(3) ss.ScreenShot("addList2.png") dashboard.enterListName(getData["List3"]) time.sleep(3) dashboard.clickAddListBtn() time.sleep(3) ss.ScreenShot("addList3.png") dashboard.enterListName(getData["List4"]) time.sleep(3) dashboard.clickAddListBtn() time.sleep(3) dashboard.getListNames() ss.ScreenShot("addList4.png") #Create 4 Cards log.info("4 cards are created") dashboard.clickAddCard() time.sleep(3) dashboard.enterCardName(getData["Card1"]) dashboard.clickAddCardBtn() ss.ScreenShot("cardName1.png") dashboard.enterCardName(getData["Card2"]) dashboard.clickAddCardBtn() ss.ScreenShot("cardName2.png") dashboard.enterCardName(getData["Card3"]) dashboard.clickAddCardBtn() ss.ScreenShot("cardName3.png") dashboard.enterCardName(getData["Card4"]) dashboard.clickAddCardBtn() time.sleep(3) dashboard.clickCancelButton() time.sleep(3) ss.ScreenShot("cardName4.png") dashboard.getCardNames() #Move card 2 to In Progress dashboard.rightClickCard(getData["Card2"]) time.sleep(3) dashboard.validateLabels() ss.ScreenShot("labels.png") time.sleep(3) dashboard.clickMoveLabel() dashboard.selectListOptionByText(getData["List2"]) time.sleep(3) dashboard.clickMoveButton() time.sleep(3) dashboard.card2MoveToInProgress() ss.ScreenShot("card2Inprogress.png") # Move card 3 to QA dashboard.rightClickCard(getData["Card3"]) time.sleep(3) dashboard.clickMoveLabel() dashboard.selectListOptionByText(getData["List3"]) time.sleep(3) dashboard.clickMoveButton() time.sleep(3) dashboard.card3MoveToQA() ss.ScreenShot("card3QA.png") #Move card 2 to QA dashboard.rightClickCard(getData["Card2"]) time.sleep(3) dashboard.clickMoveLabel() dashboard.selectListOptionByText(getData["List3"]) time.sleep(3) dashboard.clickMoveButton() time.sleep(3) dashboard.card2MoveToQA() ss.ScreenShot("card2QA.png") #Move card 1 to Current User time.sleep(3) dashboard.clickCard1() time.sleep(3) dashboard.clickMembers() time.sleep(3) dashboard.clickName() time.sleep(3) ss.ScreenShot("name.png") dashboard.enterComments(getData["Comments"]) dashboard.clickSaveBtn() ss.ScreenShot("comments.png") time.sleep(3) dashboard.clickCloseBtn() ss.ScreenShot("card1User.png") loginPage.clickProfile() loginPage.clickLogout() ss.ScreenShot("logout.png") loginPage.clickLogout() ss.writeDoc(getData["TestCase"]) log.info( "........................................Test Case Completed.............................................." ) @pytest.fixture(params=HomePageData.getTestData()) def getData(self, request): return request.param @pytest.fixture(params=HomePageData.getPassword()) def getPassword(self, request): return request.param
# driver.maximize_window() # every element of Homepage should be sent to page object of Homepage homepage = HomePage(self.driver) # homepage.getName().send_keys("rahul") # homepage.getEmail().send_keys("Shetty") homepage.getName().send_keys(getData["firstname"]) homepage.getName().send_keys(getData["lastname"]) # homepage.getName().send_keys(getData[0]) # homepage.getName().send_keys(getData[1]) # now i can able to run this test on multiple sets of data homepage.getCheckBox().click() # sel = Select(homepage.getGender()) # sel.select_by_visible_text("Male") self.selectOptionByText(homepage.getGender(), getData["gender"]) homepage.submitForm().click() alertText = homepage.getSuccessMessage().text # if some where testcase fails then automatically screenshot generate in our htmlreports # by adding screenshots code in conftest file(define screenshot method where driver is created in conftest file ) assert ("Success" in alertText) self.driver.refresh() # refreshed or else rahulmonaasu will get..no empty text field we get # @pytest.fixture(params=[("rahul", "shetty", "male"), ("mona", "lisa", "female"), ("asu", "tosh", "male")]) # @pytest.fixture(params=HomePageData.test_HomePageData) @pytest.fixture(params=HomePageData.getTestData("TestData2")) # Testcase2 is on excel file based on that it will filter only TC2 data def getData(self, request):t return request.param # we didn't write this fixture inside confest # Bcoz its not common to all test case only required for this