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 Python Selenium logging with import logging library. You can log multiple messages using the Selenium Python logging at multiple levels (debug, info, warning, error and critical). First, view the Selenium Python Logging Tutorial. Then read on.
# Selenium WebDriver Python coding
# import Python logging library with the alias, L
import logging as L
# Configure logging to start with severity level, DEBUG.
L.basicConfig(level=L.DEBUG)
L.debug('Debug message')
L.info('Info message')
L.warning('Warning message')
L.error('Error message')
L.critical('Critical message')
# import Python logging library with the alias, L
import logging as L
# Configure logging to start with severity level, DEBUG.
L.basicConfig(level=L.DEBUG)
L.debug('Debug message')
L.info('Info message')
L.warning('Warning message')
L.error('Error message')
L.critical('Critical message')
This is my Python user defined function to log messages automatically. I put it in the Utilities.py file that I showed in the Selenium Python tutorial 10.
# Selenium WebDriver Python coding
import logging as L
def log(level, message, file):
# Configure logging to start with the INFO level, the log file and the filemode as append to log file.
# Configure logging to start with the INFO level, the log file and the filemode as append to log file.
L.basicConfig(level=L.INFO, filename=file, filemode="a",
format="%(asctime)-12s %(levelname)s %(message)s", # log entry format
datefmt="%d-%m-%Y %H:%M:%S") # date time format
if level == "INFO": L.info(message)
if level == "WARNING": L.warning(message)
if level == "ERROR": L.error(message)
if level == "CRITICAL": L.critical(message)
format="%(asctime)-12s %(levelname)s %(message)s", # log entry format
datefmt="%d-%m-%Y %H:%M:%S") # date time format
if level == "INFO": L.info(message)
if level == "WARNING": L.warning(message)
if level == "ERROR": L.error(message)
if level == "CRITICAL": L.critical(message)
Here is my log function called in the Checkbox.py Selenium Python example that I showed in the Selenium Python tutorial 3. The Checkbox.py Selenium Python script answers a quiz automatically until each answer is "Correct." or it runs out of checkbox combinations.
# Selenium WebDriver Python coding
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as W
from selenium.webdriver.support import expected_conditions as E
import CheckboxFunctions as C
# Import Utilities in order to call the log function.
import Utilities as U
exec_path = r"E:\Training\SeleniumPython\Downloads\geckodriver-v0.26.0-win32\geckodriver.exe"
URL = "https://inderpsingh.blogspot.com/2013/01/HTMLCSSQuiz1.html"
wait_time_out = 15
check_name_locator = "option"
# Specify the log file file path and file name with your computer's folder. Escape the backslashes.
# The following is an example only.
log_file = "E:\\Training\\SeleniumPython\\Logs\\LogCheckBoxQuiz.txt"
# Specify the log message for pass and fail.
pass_message = "Answered correctly - Question Number"
fail_message = "Answered incorrectly - Question Number"
driver = webdriver.Firefox(executable_path=exec_path)
wait = W(driver, wait_time_out)
driver.get(URL)
i = 0
while i<10:
i += 1
driver.execute_script("window.scrollBy(0,120)","")
check_element_1 = wait.until(E.presence_of_element_located((By.NAME, check_name_locator + str(i) + "1")))
check_element_2 = wait.until(E.presence_of_element_located((By.NAME, check_name_locator + str(i) + "2")))
check_element_3 = wait.until(E.presence_of_element_located((By.NAME, check_name_locator + str(i) + "3")))
check_element_1.click()
check_element_2.click()
check_element_3.click() # checkboxes 1, 2 & 3 are selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_1.click() # checkboxes 2 & 3 are selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_1.click()
check_element_2.click() # checkboxes 1 & 3 are selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_2.click()
check_element_3.click() # checkboxes 1 & 2 are selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_2.click() # only checkbox 1 is selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_1.click()
check_element_2.click() # only checkbox 2 is selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
check_element_2.click()
check_element_3.click()# only checkbox 3 is selected
if C.answered(driver, i):
# Python Selenium logging if the question is answered successfully
U.log("INFO", pass_message + str(i), log_file)
continue
# Selenium Python logging if the question is still unanswered.
U.log("ERROR", fail_message + str(i), log_file)
The above Selenium Python script calls the answered user defined function that I wrote in CheckboxFunctions.py file below.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as W
from selenium.webdriver.support import expected_conditions as E
wait_time_out = 15
def answered(d, question_number):
wait_variable = W(d, wait_time_out)
answer_element = wait_variable.until(E.presence_of_element_located((By.NAME, "answer" + str(question_number))))
if "Correct." in answer_element.get_attribute("value"):
return True
else:
return False
from selenium.webdriver.support.ui import WebDriverWait as W
from selenium.webdriver.support import expected_conditions as E
wait_time_out = 15
def answered(d, question_number):
wait_variable = W(d, wait_time_out)
answer_element = wait_variable.until(E.presence_of_element_located((By.NAME, "answer" + str(question_number))))
if "Correct." in answer_element.get_attribute("value"):
return True
else:
return False
Want to see the above Selenium Python test automation working? Please view my Selenium Python Logging Tutorial. Thank you.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.