Selenium WebDriver
Benefits of Selenium
Four components of Selenium
Difference b/w Selenium IDE, RC & WebDriver
Selenium WebDriver Architecture
Background when user execute selenium code
Download and Install Java
Download and Install Eclipse
Download Selenium WebDriver
Selenium WebDriver Locators
Selenium - Launch Browser
Selenium WebDriver Waits
Selenium- Implicit wait
Selenium- Explicit wait
Selenium- Fluent wait
Selenium- Commonly used commands
Selenium- findElement & findElements
Selenium- Selenium-Handling check Box
Selenium- Handling Radio button
Selenium- Handling drop down
Selenium- Take Screenshot
Selenium- Handle Web Alerts
Selenium- Multiple Windows Handling
Selenium- Handle iframes
Selenium- Upload a file
Selenium- Download a file
Selenium- Actions Class Utilities
Selenium- Mouse Actions
Selenium- Keyboards Events
Selenium- Handle mouse hover Actions
Selenium- Drag and Drop
Selenium- Scroll a WebPage
Selenium- Context Click / Right Click
Selenium- Double Click
Selenium- Desired Capabilities
Selenium- Assertions
Selenium- Exceptions and Exception Handling
Selenium- Difference b/w driver.close() & driver.quit()
Selenium- difference b/w driver.get() & driver.navigate()
Selenium- JavascriptExecutor
Selenium- Read excel file using Fillo API
Selenium- Database Testing using Selenium
Selenium- Read & write excel file using Apache POI
Selenium- Read and Write csv file in Selenium
Selenium- Dynamic Web Table Handling
Selenium- Maven Integration with Selenium
Selenium- Set up Logging using Log4j
Selenium-Implement Extent Report
Set up Logging using Log4j in selenium
This article will present you with a complete idea about the logger , log4j in selenium, components of Log4j and will give an example how to set Log4j up in our project.
- Importance of Logs in Automation Project?
- What is Log4j in Selenium?
- Components of Log4j
- How to Set up Log4j in our Selenium Automation Project using log4j.properties?
- Configure logger with log4j.xml file
Importance of Logs in Automation Project?
Log analysis is one of the most important aspects of performing effective and efficient software testing.
End-to-end functionalities and UI may look right but a QA can never be sure about the product until they make sure that there are no errors or exceptions or something unexpected in the application logs.
During the execution of test cases, user wants some information to be logged in the console. We need the execution log which helps the user to understand the test steps or any failure during the test case execution.
With the help of Log4j it is possible to enable loggings during the Selenium test case execution.
What is Log4j in Selenium?
Log4j is an open source logging framework. With log4j – logging behaviour can be controlled by editing a configuration file only without touching the application code and can be used to store the Selenium Automation flow logs.
Log4j in selenium can be used to track the execution flow, identify problematic area effectively and easy debugging.
Let’s take a look at the various components of the Log4j logging framework.
Components of Log4j
The Log4j logging framework comprises the following components:
- Logger
- Appenders
- Layout
Logger
The function of the logger in Log4j is storing and capturing all the necessary logging information that will be generated using the scripts.
To implement loggers into a project following steps need to be performed –
Create an instance for logger class
Define the Log level: There are primarily five kinds of log levels
- DEBUG – print the debugging information .
- INFO – print informational message that highlights the progress of the application
- WARN – print information regarding faulty and unexpected system behaviour.
- ERROR – print error message that might allow system to continue
- FATAL – print system critical information which are causing the application to crash
Appenders
The appender basically takes information from the logger and write log messages to a file or any other storage location.
Below are few of the appenders
- FileAppender –Will append the log messages to a file.
- RollingFileAppender –It is same as FileAppender on the basis of functionalities, but users will specify the maximum file size and once the limit is exceeded, the appender will create another file to write the messages.
- ConsoleAppender –Appender will write the log messages in the console.
Layouts
It is responsible for formatting logging information in different styles.
How to Set up Log4j in our Selenium Automation Project?
- Download log4j JAR file from https://logging.apache.org/log4j/1.2/download.html
- Create New Java Project or add this external JAR library in any existing java project using below navigation
Right click on src -> Build Path -> Configure Build Path -> Libraries -> Add External JARs -> “Browse the folder in which you have saved the jar files” -> Select the jar file -> Click open -> Click OK
OR
Add below maven dependency in pom.xml if you are using maven in the project
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
Reference : https://mvnrepository.com/artifact/log4j/log4j
3.Create a file in the project name as log4j.properties and add below set of lines/code in this.
Add this file in the Project.
#Set the level
log4j.rootCategory=debug, console, file
# Appender for writing to console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{MM-dd-yyyy HH:mm:ss} %F %-5p [%t] %c{2} %L - %m%n
# Appender for writing to a file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logFile.log
# Define maximum size of the log file
log4j.appender.file.MaxFileSize=8mb
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %d{MM-dd-yyyy HH:mm:ss} %F %-5p [%t] %c{2} %L - %m%n
log4j.appender.file.Append=false
In the above log4j.properties file below are few parameters defined
-
- rootCategory defines the different ways in which we want logs to be generated.
- ConsoleAppender : display logs on Console
- RollingFileAppender :used to create and store logs in a file.
- Append=false:will overwrite previous logs.
To append your current logs to previously generated logs change this value to true.
-
- Each conversion specifier starts with a percent sign (%) and is followed by optional format modifiers and a conversion character
- %d{dd MMM yyyy HH:mm:ss,SSS}– Used to output the date of the logging event, we can specify date format specifier enclosed between braces
- %F– Used to print file name
- %-5pmeans the priority of the logging event should be left justified to a width of five characters.
- %t – Used to output the name of the thread that generated the logging event.
- %L– Used to output the line number from where the logging request was issued.
- %m– Used to output the application supplied message associated with the logging event.
- %M– Used to output the method name where the logging request was issued.
- %d{ISO8601}Formats a Date in the format “yyyy-MM-dd HH:mm:ss,SSS” for example “1999-11-27 15:49:37,459”.
- %d{HH:mm:ss,SSS} Used to output the date of the logging event. If no date format specifier is given then ISO8601 format is assumed by default.
Below are the steps to create your own logs in Selenium using log4j:
- Configure log4j.properties file using below
PropertyConfigurator.configure(“path of log4j.properties”);
2. Create a Logger object inside the class and Invoke getLogger() method of Logger class and pass the className.class as an argument to it.
public static Logger log = Logger.getLogger(LoggerTestExample.class);
3. Use this object with any of the log levels with our own text.
Below is the code snippet for this
package mavenLog4jProject.log4Jproject; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class LoggerTestExample { // get a logger instance public static Logger log = Logger.getLogger(LoggerTestExample.class); public void testLoggerWarn() { log.warn("Log test in Warn method"); } public void testLoggerError() { log.error("Log test in Error method"); } public void testLoggerDebug() { log.debug("Log test in Debug method"); } public void testLoggerInfo() { log.info("Log test in Info method"); } public void testLoggerFatal() { log.fatal("Log test in Fatal method"); } public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); LoggerTestExample ltest = new LoggerTestExample(); ltest.testLoggerWarn(); ltest.testLoggerError(); ltest.testLoggerDebug(); ltest.testLoggerInfo(); ltest.testLoggerFatal(); } }
Output:
Configure logger with log4j.xml file
We can also configure the log4j logging system with xml configuration file which is log4j.xml.
In the similar way as described above , we can mention user defined logs in the class .
Also Configure log4j.xml file using below
DOMConfigurator.configure(“log4j.xml”);
Selenium WebDriver Tutorials
Benefits of Selenium
Four components of Selenium
Difference b/w Selenium IDE, RC & WebDriver
Selenium WebDriver Architecture
Background when user execute selenium code
Download and Install Java
Download and Install Eclipse
Download Selenium WebDriver
Selenium WebDriver Locators
Selenium - Launch Browser
Selenium WebDriver Waits
Selenium- Implicit wait
Selenium- Explicit wait
Selenium- Fluent wait
Selenium- Commonly used commands
Selenium- findElement & findElements
Selenium- Selenium-Handling check Box
Selenium- Handling Radio button
Selenium- Handling drop down
Selenium- Take Screenshot
Selenium- Handle Web Alerts
Selenium- Multiple Windows Handling
Selenium- Handle iframes
Selenium- Upload a file
Selenium- Download a file
Selenium- Actions Class Utilities
Selenium- Mouse Actions
Selenium- Keyboards Events
Selenium- Handle mouse hover Actions
Selenium- Drag and Drop
Selenium- Scroll a WebPage
Selenium- Context Click / Right Click
Selenium- Double Click
Selenium- Desired Capabilities
Selenium- Assertions
Selenium- Exceptions and Exception Handling
Selenium- Difference b/w driver.close() & driver.quit()
Selenium- difference b/w driver.get() & driver.navigate()
Selenium- JavascriptExecutor
Selenium- Read excel file using Fillo API
Selenium- Database Testing using Selenium
Selenium- Read & write excel file using Apache POI
Selenium- Read and Write csv file in Selenium
Selenium- Dynamic Web Table Handling
Selenium- Maven Integration with Selenium
Selenium- Set up Logging using Log4j
Selenium-Implement Extent Report