DEV Community

Cover image for Testing Emails with Selenium
Klaus for Endtest

Posted on

6 3

Testing Emails with Selenium

Selenium is widely used, but it's a little known fact that you can use it to test anything built with HTML and CSS, including Chrome Extensions and Emails.

We'll create a simple test for the Register page from Swit and then we'll test the email that we receive.

I'll also be making some comparisons between Selenium and Endtest:


Selenium can only interact with HTML elements if they're in a browser.

This means that we'll have to open our email in a browser.

Luckily, anyone can use the Endtest Mailbox for free.

The way it works is similar to a disposable email service.
Simply send your email(s) to a username@endtest.io email address.

The username can be anything you choose.
For instance, you can choose something like jim32328@endtest.io.

You can access the Inbox for that email address on that page.

Just add the email parameter in the URL, like this:
https://endtest.io/mailbox?email=jim32328@endtest.io

Please note that the emails will be deleted after 2 hours.

But for now, let's get back the Register page from Swit:

driver.get("https://swit.io/register")

firstName = driver.find_element_by_id("firstName")
lastName = driver.find_element_by_id("lastName")
email = driver.find_element_by_id("id")
password = driver.find_element_by_id("password")
confirmPassword = driver.find_element_by_id("confirmPassword")
submitButton = driver.find_element_by_class_name("button--important")

firstName.send_keys("Klaus")
lastName.send_keys("Werner")
email.send_keys("klaus123@endtest.io")
password.send_keys("Password123")
confirmPassword.send_keys("Password123")
submitButton.click()

And here is the result:

Now, if we want to check that email, we have to go to:
https://endtest.io/mailbox?email=klaus123@endtest.io

And we'll be able to open our email:

We just have to write that part with Selenium:

driver.get("https://endtest.io/mailbox?email=klaus123@endtest.io")
email = driver.find_element_by_class_name("email_item")
email.click()

Since you're planning to run that test multiple times, you should generate a random email and store it in a variable and then append it to the Endtest Mailbox URL.

If you're looking for a better Selenium alternative, switch to Endtest.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →