Skip to content

Commit

Permalink
added page object
Browse files Browse the repository at this point in the history
  • Loading branch information
md-sikder committed Nov 17, 2024
1 parent 96c371e commit d5d631a
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 32 deletions.
Empty file added pages/__init__.py
Empty file.
23 changes: 23 additions & 0 deletions pages/login.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from selenium.webdriver.common.by import By


class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username_field = (By.ID, "username")
self.password_field = (By.NAME, "password")
self.signin_button = (By.XPATH, "//input[@name='signin']")

def enter_username(self, username):
self.driver.find_element(*self.username_field).send_keys(username)

def enter_password(self, password):
self.driver.find_element(*self.password_field).send_keys(password)

def click_signin(self):
self.driver.find_element(*self.signin_button).click()

def login(self, username, password):
self.enter_username(username)
self.enter_password(password)
self.click_signin()
49 changes: 17 additions & 32 deletions tests/test_login.py
Original file line number Diff line number Diff line change
@@ -1,44 +1,29 @@
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from pages.login import LoginPage # Assuming the LoginPage is in login_page.py


def test_login():
chrome_options = Options()
chrome_options.add_argument("--headless") # Run in headless mode
chrome_options.add_argument("--no-sandbox") # Disable sandbox for CI environments
chrome_options.add_argument("--disable-dev-shm-usage") # Overcome limited resource problems
chrome_options.add_argument("--disable-gpu") # Disable GPU rendering
chrome_options.add_argument("--window-size=1920x1080") # Optional: Set window size
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--window-size=1920x1080")

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://rahulshettyacademy.com/loginpagePractise/")
# Locate elements and perform actions
driver.find_element(By.ID, "username").send_keys("rahulshettyacademy")
driver.find_element(By.NAME, "password").send_keys("learning")
driver.find_element(By.XPATH, "//input[@name='signin']").click()

time.sleep(5)
# Check if login was successful by checking the page title
assert "ProtoCommerce" in driver.title
try:
# Initialize the LoginPage object
login_page = LoginPage(driver)

driver.quit()
# Open the page and perform actions
driver.get("https://rahulshettyacademy.com/loginpagePractise/")
login_page.login("rahulshettyacademy", "learning")

# def test_login():
# driver = webdriver.Chrome()
# driver.maximize_window()
# driver.get("https://rahulshettyacademy.com/loginpagePractise/")
# # Locate elements and perform actions
# driver.find_element(By.ID, "username").send_keys("rahulshettyacademy")
# driver.find_element(By.NAME, "password").send_keys("learning")
# driver.find_element(By.XPATH, "//input[@name='signin']").click()
#
# time.sleep(5)
# # Check if login was successful by checking the page title
# assert "ProtoCommerce" in driver.title
#
# driver.quit()
# Check if login was successful
time.sleep(5) # Wait for login to complete
assert "ProtoCommerce" in driver.title
finally:
driver.quit()

0 comments on commit d5d631a

Please sign in to comment.