Using Selenium in Python to Automate Facebook Login

Python Facebook Login

Hello everyone! In today’s article, we’ll be looking at using Python to automatically login to Facebook.

This will be a fun experiment that will give you a glimpse into web-browser automation using Python’s Selenium web driver. So let’s get right into the topic and create a script that will visit the Facebook page, enter the credentials, and log right in!


Prerequisites

Now, before going though this tutorial, you’ll need to install certain libraries in Python. These libraries will make it very easy for us to login to the browser.

We’ll be using the Selenium webdriver module in Python. This module enables us to control our web browser (Chrome / Firefox) using a driver program.

But, to use Selenium along with our browser, we’ll need to install the drivers for that browser (Chrome/Firefox). To install them, we’ll take the help of another Python module: webdriver_manager

Instead of having to download the selenium webdriver manually, you can simply import this module! This will fetch all requirements automatically for you.

So now, let’s pip install the necessary packages, using the pip manager:

pip install selenium
pip install webdriver_manager

Now that we’ve installed our requirements, let’s start writing the code!


Writing our Script to Automate Facebook login

Let’s first import the necessary modules. We’ll need selenium as well as the webdriver_manager.

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.chrome import ChromeDriverManager
import time

Here, I need the webdriver class of the core Selenium module. Also, since we’ll be using it with firefox/chrome, we’ll need to load the necessary WebDrivers.

Now, we’ll be using the below url to login:

LOGIN_URL = 'https://www.facebook.com/login.php'

Now, we’ll implement the login functionality as a class. Let’s call it FacebookLogin.

When we call __init__(), we’ll initialize the selenium webdriver session. We need to send both the email and password fields to our webdriver session, so we’ll take them as input.

Finally, we will fetch the LOGIN_URL with a GET request from the webdriver.

class FacebookLogin():
    def __init__(self, email, password, browser='Chrome'):
        # Store credentials for login
        self.email = email
        self.password = password
        if browser == 'Chrome':
            # Use chrome
            self.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
        elif browser == 'Firefox':
            # Set it to Firefox
            self.driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
        self.driver.get(LOGIN_URL)
        time.sleep(1) # Wait for some time to load

Alright, now we have initialized the class instance. Now, to login, we’ll create another method called login() to do this for us.

To login, we’ll need to give the input to the login elements (email and pass on the html page)

Selenium has the find_element_by_id() method, which will automatically locate the corresponding element for you!

To send the keyboard input, we can use element.send_keys(input) directly!

    def login(self):
        email_element = self.driver.find_element_by_id('email')
        email_element.send_keys(self.email) # Give keyboard input

        password_element = self.driver.find_element_by_id('pass')
        password_element.send_keys(self.password) # Give password as input too

        login_button = self.driver.find_element_by_id('loginbutton')
        login_button.click() # Send mouse click

        time.sleep(2) # Wait for 2 seconds for the page to show up

Notice how simple the API is! We can directly do element.send_keys() and element.click()!

Finally, give the program some time to load the webpage, using time.sleep()

I’ll give you the full code below. Just make sure to use your proper login credentials in the main module.

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager
from webdriver_manager.chrome import ChromeDriverManager
import time


LOGIN_URL = 'https://www.facebook.com/login.php'

class FacebookLogin():
    def __init__(self, email, password, browser='Chrome'):
        # Store credentials for login
        self.email = email
        self.password = password
        if browser == 'Chrome':
            # Use chrome
            self.driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
        elif browser == 'Firefox':
            # Set it to Firefox
            self.driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
        self.driver.get(LOGIN_URL)
        time.sleep(1) # Wait for some time to load



    def login(self):
        email_element = self.driver.find_element_by_id('email')
        email_element.send_keys(self.email) # Give keyboard input

        password_element = self.driver.find_element_by_id('pass')
        password_element.send_keys(self.password) # Give password as input too

        login_button = self.driver.find_element_by_id('loginbutton')
        login_button.click() # Send mouse click

        time.sleep(2) # Wait for 2 seconds for the page to show up


if __name__ == '__main__':
    # Enter your login credentials here
    fb_login = FacebookLogin(email='[email protected]', password='PASSWORD', browser='Firefox')
    fb_login.login()

Hopefully your browser will be showing your home page now. Hurray, you’ve successfully logged on to facebook!


Conclusion

In this article, we learned about using Python and Selenium to automate logging onto Facebook quickly!