Skip to content

Commit d01b94b

Browse files
committed
useful sample login project of pom
1 parent 7357af8 commit d01b94b

5 files changed

Lines changed: 133 additions & 0 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Locators():
2+
3+
#login page objects
4+
username_textbox_id = "txtUsername"
5+
password_textbox_id = "txtPassword"
6+
login_button_id = "btnLogin"
7+
8+
#home page objects
9+
welcome_link_id = "welcome"
10+
logout_link_linkText = "Logout"

PomProjectDemo/Pages/homepage.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from Seleniumpython.PomProjectDemo.Locators.locators import Locators
2+
class HomePage():
3+
4+
def __init__(self,driver): #creating constructor
5+
self.driver= driver
6+
7+
self.welcome_link_id= Locators.welcome_link_id #"welcome"
8+
# self.logout_link_linkText= "Logout" #Locators.logout_link_linkText
9+
10+
def click_welcome(self):
11+
self.driver.find_element_by_id(self.welcome_link_id).click()
12+
13+
def click_logout(self):
14+
# self.driver.find_element_by_link_text( self.logout_link_linkText).click()
15+
self.driver.find_element_by_xpath("//*[@id='welcome-menu']/ul/li[2]/a").click()

PomProjectDemo/Pages/loginPage.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from Seleniumpython.PomProjectDemo.Locators.locators import Locators
2+
class LoginPage():
3+
4+
def __init__(self,driver):
5+
self.driver= driver
6+
# "txtUsername"
7+
self.username_textbox_id= Locators.username_textbox_id
8+
self.password_textbox_id= "txtPassword"
9+
self.login_button_id= "btnLogin"
10+
11+
def enter_username(self,username):
12+
self.driver.find_element_by_id(self.username_textbox_id).clear()
13+
self.driver.find_element_by_id(self.username_textbox_id).send_keys(username)
14+
15+
def enter_password(self,password):
16+
self.driver.find_element_by_id(self.password_textbox_id).clear()
17+
self.driver.find_element_by_id(self.password_textbox_id).send_keys(password)
18+
19+
def click_login(self):
20+
self.driver.find_element_by_id(self.login_button_id).click()
21+

PomProjectDemo/Tests/login.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#error in creating html reports
2+
import time
3+
import unittest
4+
from HtmlTestRunner import HTMLTestRunner
5+
from selenium import webdriver
6+
from Seleniumpython.PomProjectDemo.Pages.loginPage import LoginPage
7+
from Seleniumpython.PomProjectDemo.Pages.homepage import HomePage
8+
9+
class LoginTest(unittest.TestCase):
10+
11+
@classmethod
12+
def setUpClass(cls):
13+
cls.driver = webdriver.Chrome(executable_path="C:\driver\chromedriver.exe")
14+
cls.driver.maximize_window()
15+
16+
def test_login_valid(self):
17+
driver= self.driver # created to avoid self.driver everywhere
18+
driver.get("https://opensource-demo.orangehrmlive.com/index.php/dashboard")
19+
20+
login= LoginPage(driver)
21+
login.enter_username("Admin")
22+
login.enter_password("admin123")
23+
login.click_login()
24+
25+
homepage= HomePage(driver)
26+
homepage.click_welcome()
27+
homepage.click_logout()
28+
29+
time.sleep(2)
30+
31+
32+
@classmethod
33+
def tearDownClass(cls):
34+
cls.driver.close()
35+
print("Test Completed")
36+
37+
if __name__ == '__main__':
38+
unittest.main(testRunner= HTMLTestRunner(output='E:/Programming/Seleniumpython/PomProjectDemo/Reports'))
39+
40+
# Pom ,unit test and html reports
41+
# installed html-test runner and selenium from cmd
42+
# 1.create a simple login test
43+
# 2.implement unit testing
44+
# 3.implement page object model
45+
# 4.seperate test script and objects
46+
# 5.create a separate class for locators
47+
# 6.run from cmd
48+
# 7.add html reports
49+
50+
# note: classmethod is used due to using setupclass and teardownclass methods
51+
# run-edit configuration-add pythontest from + sign-delete login in python-pythontest-unittest-name(login)-location.
52+
53+
# print(self.driver.title)
54+
# self.driver.implicitly_wait(2)
55+
# self.driver.find_element_by_id("txtUsername").send_keys("Admin")
56+
# self.driver.find_element_by_id("txtPassword").send_keys("admin123")
57+
# self.driver.find_element_by_id("btnLogin").click()
58+
# time.sleep(4)
59+
# self.driver.find_element_by_id("welcome").click()
60+
# self.driver.find_element_by_link_text("Logout").click()
61+
# time.sleep(4)

Pytest/Test_setup.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import time
2+
import pytest
3+
from selenium import webdriver
4+
5+
class TestSample():
6+
@pytest.fixture()
7+
def test_setup(self):
8+
global driver
9+
driver = webdriver.Chrome(executable_path="C:\driver\chromedriver.exe")
10+
driver.get("https://opensource-demo.orangehrmlive.com/index.php/dashboard")
11+
driver.maximize_window()
12+
print(driver.title)
13+
yield
14+
driver.close()
15+
print("Test completed")
16+
17+
18+
def test_login(self,test_setup):
19+
driver.find_element_by_id("txtUsername").send_keys("Admin")
20+
driver.find_element_by_id("txtPassword").send_keys("admin123")
21+
driver.find_element_by_id("btnLogin").click()
22+
time.sleep(4)
23+
# def test_teardown():
24+
# driver.close()
25+
# print("Test completed")
26+

0 commit comments

Comments
 (0)