Post thumbnail
ARTIFICIAL INTELLIGENCE AND MACHINE LEARNING

Generative AI with Python Selenium

By Suman Gangopadhyay

In the world of automation, Selenium has long been a cornerstone for web applications. However, the advent of Generative AI has introduced a new dimension to automation which promises to enhance efficiency, accuracy, and creativity.

This blog post delves into the exciting intersection of Generative AI with Python Selenium exploring how Python can be leveraged to harness the power of both technologies.

By combining the robust web automation capabilities of the Selenium framework with the innovative potential of Generative AI, automation testers can create more intelligent, adaptive, and efficient automation solutions. Let us see more about it in this article!

Table of contents


  1. Prerequisites for Generative AI with Python Selenium
  2. Conclusion

Prerequisites for Generative AI with Python Selenium

For the Generative AI in action with Python Selenium we need to have a problem statement first. With that problem we will request the Google Gemini AI model to write an automation testing test-case.

Followed by which we will see and evaluate whether the code works and what more we can do to enhance the quality of our Python code.

The journey is going to be exciting as we humans will be going to evaluate the Python code written by a Generative AI model.

The problem statement for our Blog is:- 

“Write a Python script for automation testing using Python Selenium framework and Pytest to login into the OrangeHRM dashboard using the Username “admin” and Password “admin123”. “

Python script for automation testing

Now let us see what type of Python automation testing code the Google Gemini AI model makes for us!

Python automation testing code Google Gemini AI

The full code is as follows

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By


@pytest.fixture
def driver():
    driver = webdriver.Chrome()  # Replace 'chromedriver' with the path to your ChromeDriver
    yield driver
    driver.quit()


def test_orangehrm_login(driver):
    # Navigate to OrangeHRM login page
    driver.get("https://opensource-demo.orangehrmlive.com/web/index.php/auth/login")


    # Find username and password fields
    username_field = driver.find_element(By.ID, "username")
    password_field = driver.find_element(By.ID, "password")


    # Enter credentials
    username_field.send_keys("admin")
    password_field.send_keys("admin123")


    # Submit login form
    login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
    login_button.click()


    # Assert successful login (e.g., check for a specific element on the dashboard)
    assert "Dashboard" in driver.title

Now, if we look into the code it is quite certain that it will work and run properly. Great! We do not need to write any code as Generative AI will take all the pains of automation testers now.

But ! Here is a Catch !!! The code fails to follow the rules and guidelines set by Page Object Model (POM).  

The correct folder structure is 

folder structure

The entire code is given below which follows the Page Object Model (POM)

# data.py


# This file consists of Test Information like username, password, XPATH etc


# Python Class for Username and Password
class Suman_Data:
    username = "Admin"
    password = "admin123"


# Python Class for Selenium Selectors
class Suman_Selectors:
    input_box_username = "username"
    input_box_password = "password"
    login_xpath = '//*[@id="app"]/div[1]/div/div[1]/div/div[2]/div[2]/form/div[3]/button'

# testSuman.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from Test_Data import data
import pytest
import time


class Test_Suman:
    url = "https://opensource-demo.orangehrmlive.com"
   
    # Booting Method for running the Python Tests
    @pytest.fixture
    def booting_function(self):
        self.driver = webdriver.Firefox()
        yield
        self.driver.close()
   
    def test_get_title(self, booting_function):
        self.driver.get(self.url)
        assert self.driver.title == 'suman'
        print("SUCCESS # Web Title Captured Successfully")
   
    def test_login(self, booting_function):
        self.driver.get(self.url)
        time.sleep(5)
        self.driver.find_element(by=By.NAME, value=data.Suman_Selectors.input_box_username).send_keys(data.Suman_Data.username)
        self.driver.find_element(by=By.NAME, value=data.Suman_Selectors.input_box_password).send_keys(data.Suman_Data.password)
        self.driver.find_element(by=By.XPATH, value=data.Suman_Selectors.login_xpath).click()
        assert self.driver.title == 'OrangeHRM'
        print("SUCCESS # LOGGED IN WITH USERNAME {username} and PASSWORD {password}".format(username=data.Suman_Data.username, password=data.Suman_Data.password))

From the codes written by Generative Model and by human-being we can say one thing that Generative AI is going to help us to write day-to-day codes without any issues but to manage and maintain code quality we need human interference which can ensure that the code which is being written will be 

  • Reusable 
  • More readable
  • Sans with duplication

In case you want to learn more about automation testing with Selenium, consider enrolling for GUVI’s certified Automation Testing with Selenium Course online course that teaches you everything from scratch and also provides you with an industry-grade certificate!

MDN

Conclusion

Therefore, we can say that the combination of Python Selenium and Generative AI opens up a world of possibilities for automation, and testing. By leveraging the strengths of both technologies we can automate repetitive tasks, generate personalized content, and enhance user experiences. As Generative AI and automation continue to evolve we can expect to see even more groundbreaking advancements in the future and a bright future for budding and working automation testers as well.

Career transition

Did you enjoy this article?

Schedule 1:1 free counselling

Similar Articles

Loading...
Share logo Copy link
Free Webinar
Free Webinar Icon
Free Webinar
Get the latest notifications! 🔔
close
Table of contents Table of contents
Table of contents Articles
Close button