Automate Instagram Login Using Python Selenium
Tags: python, selenium, automation
Published: 2022-06-03 01:36:43

---
title: Automate Instagram Login Using Python Selenium
published: true
date: 2021-04-29 08:35:40 UTC
tags: python, selenium, automation
canonical_url: 
---

Today, We will log in to Instagram using the Selenium to do this task.

**Package needed:**

- Selenium package

```
# for Windows
pip install selenium

# for Linux/Max
pip3 install selenium
# or
sudo -H pip3 install selenium

```

- Chromedriver compatible with the existing chrome version [download](https://chromedriver.chromium.org/home) 

**imports:**

```
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

```

**constants:**

```
URL = "https://www.instagram.com/accounts/login/"
EXE_PATH = r"C:\Users\vinayak\Documents\chromedriver_win32\chromedriver"

```

**ChromeDriver class:**

```

class ChromeDriver:
    def __init__ (self, username, password):
        self.username = username
        self.password = password
        self.driver = webdriver.Chrome(executable_path=EXE_PATH)
        self.driver.implicitly_wait(10)

    def login(self):
        self.driver.get(URL)
        self.driver.maximize_window()
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']/div//input[@name='username']"
        ).send_keys(self.username)
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']/div/div[2]/div//input[@name='password']"
        ).send_keys(self.password)
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']//button[@type='submit']"
        ).click()
        # to clean popups after login
        self.afterLogin()

    def afterLogin(self):
        try:
            self.driver.find_element_by_xpath(
                "//button[contains(text(),'Save Info')]"
            ).click()
        except NoSuchElementException:
            print("no save Info")
        try:
            self.driver.find_element_by_xpath(
                "//*[contains(@class, 'aOOlW HoLwm ')]"
            ).click()
        except NoSuchElementException:
            print("no notification box")
        time.sleep(100)

```

Here, we have two functions:

- login: this function opens Instagram and login to Instagram
- afterlogin: after logging Instagram shows some popups, this function removes them

**Testing code:**

```
def main():
    username = input("enter username: ")
    password = input("enter password: ")
    test = ChromeDriver(username, password)
    test.login()

if __name__ == " __main__":
    main()

```

**Full Code:**

```
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

# constants
URL = "https://www.instagram.com/accounts/login/"
EXE_PATH = r"C:\Users\vinayak\Documents\chromedriver_win32\chromedriver"

class ChromeDriver:
    def __init__ (self, username, password):
        self.username = username
        self.password = password
        self.driver = webdriver.Chrome(executable_path=EXE_PATH)
        self.driver.implicitly_wait(10)

    def login(self):
        self.driver.get(URL)
        self.driver.maximize_window()
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']/div//input[@name='username']"
        ).send_keys(self.username)
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']/div/div[2]/div//input[@name='password']"
        ).send_keys(self.password)
        self.driver.find_element_by_xpath(
            "/html//form[@id='loginForm']//button[@type='submit']"
        ).click()
        # to clean popups after login
        self.afterLogin()

    def afterLogin(self):
        try:
            self.driver.find_element_by_xpath(
                "//button[contains(text(),'Save Info')]"
            ).click()
        except NoSuchElementException:
            print("no save Info")
        try:
            self.driver.find_element_by_xpath(
                "//*[contains(@class, 'aOOlW HoLwm ')]"
            ).click()
        except NoSuchElementException:
            print("no notification box")
        time.sleep(100)

def main():
    username = input("enter username: ")
    password = input("enter password: ")
    test = ChromeDriver(username, password)
    test.login()

if __name__ == " __main__":
    main()

```