Moving on to the next tutorial in the Selenium Python Tutorials for Beginners. It deals with Python Automation Testing with Selenium WebDriver Python. This Selenium Python beginner tutorial explains Selenium Python Page Object Model, also known as the POM framework. Not using the Selenium Python POM framework results in lower Python code readability and code duplicity. We can implement Python Selenium POM by creating separate Python files for the web page and the test logic. First, view the Selenium Python Page Object Model Tutorial Then read on.
Selenium Python POM implementation has the following steps:
- Create separate directories for web pages and test cases. Optionally, create separate directories for browser drivers, logs and screenshots.
- In the web pages directory, create a separate Python file for each web page. This Python file should contain the code for web page operations, web page locators and title etc.
- In the test cases directory, create a separate Python file for each test case. This Python file should contain only the test logic, which consists of test steps and expected results' validations.
# Test_Cases>WikipediaTest1.py
# Selenium WebDriver Python coding
from selenium import webdriver
from Pages.MainPage import MainPage
from Pages.EnglishPage import EnglishPage
from Pages.MainPage import MainPage
from Pages.EnglishPage import EnglishPage
exec_path = r"E:\Training\SeleniumPython\Downloads\geckodriver-v0.26.0-win32\geckodriver.exe"
driver = webdriver.Firefox(executable_path=exec_path)
base_URL = "https://www.wikipedia.org"
def set_up():
driver.get(base_URL)
# Test logic containing the test steps and expected results' validation
def test_main_page():
mp = MainPage(driver)
mp.test_title()
mp.click_english_link()
# Test automation logic (test steps and expected results' validation)
def test_english_page():
ep = EnglishPage(driver)
ep.search_text()
set_up()
test_main_page()
test_english_page()
driver = webdriver.Firefox(executable_path=exec_path)
base_URL = "https://www.wikipedia.org"
def set_up():
driver.get(base_URL)
# Test logic containing the test steps and expected results' validation
def test_main_page():
mp = MainPage(driver)
mp.test_title()
mp.click_english_link()
# Test automation logic (test steps and expected results' validation)
def test_english_page():
ep = EnglishPage(driver)
ep.search_text()
set_up()
test_main_page()
test_english_page()
# Pages>MainPage.py
# Selenium WebDriver Python coding
from selenium.webdriver.common.by import By
# Import statements for Explicit Wait or WebDriverWait Python
# Import statements for Explicit Wait or WebDriverWait Python
from selenium.webdriver.support.ui import WebDriverWait as W
from selenium.webdriver.support import expected_conditions as E
class MainPage():
# Put the title and web page locators.
from selenium.webdriver.support import expected_conditions as E
class MainPage():
# Put the title and web page locators.
title = "Wikipedia"
english_partial_link_text = "English"
wait_time_out = 5 # for explicit wait
# init method will be executed automatically when the MainPage object is created.
english_partial_link_text = "English"
wait_time_out = 5 # for explicit wait
# init method will be executed automatically when the MainPage object is created.
def __init__(self, drv):
self.drv = drv
self.wait_variable = W(self.drv, self.wait_time_out)
# Now, add methods for automation test logic.
# test_title is a web page operation in the MainPage for expected result validation.
self.drv = drv
self.wait_variable = W(self.drv, self.wait_time_out)
# Now, add methods for automation test logic.
# test_title is a web page operation in the MainPage for expected result validation.
def test_title(self):
assert self.title in self.drv.title
assert self.title in self.drv.title
# click_english_link is also a web page operation in the MainPage.
def click_english_link(self):
self.wait_variable.until(E.element_to_be_clickable((By.PARTIAL_LINK_TEXT, self.english_partial_link_text))).click()
self.wait_variable.until(E.element_to_be_clickable((By.PARTIAL_LINK_TEXT, self.english_partial_link_text))).click()
# Pages>EnglishPage.py
# Selenium WebDriver Python coding
from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait as W
from selenium.webdriver.support import expected_conditions as E
class EnglishPage():
# Put the web page locators and search term.
search_id_locator = "searchInput"
term = "Software"
wait_time_out = 5 # for WebDriverWait Python
# The class init method is also called the constructor.
def __init__(self, drv):
self.drv = drv
self.wait_variable = W(self.drv, self.wait_time_out)
# automation test logic
def search_text(self):
input_box_element = self.wait_variable.until(E.presence_of_element_located((By.ID, self.search_id_locator)))
input_box_element.send_keys(self.term)
input_box_element.submit()
# Expected result validation
self.wait_variable.until(E.title_contains(self.term))
Want to understand how the Python code above works? And how to implement logging and screenshots in the POM framework easily? Then please view my Selenium Python POM Tutorial. Thank you.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.