Automate Amazon like E-Commerce Website with Selenium WebDriver

We have created this post as a 'Self Learning Project Assignment' for the automation geeks.

In this project assignment, you will learn to automate different functionalities of an e-commerce website. 
This assignment is rated as 'Pro' level, which means you should have sound knowledge of all the Selenium concepts. We'll create test plan and then automate an e-commerce website which is quite similar to amazon.com.

Table of Content

1. What should you know before starting this Project assignment?

2. Which functionalities will we automate in this Project assignment?

3. Create Test Plan for Amazon like e-commerce website

4. Automate Amazon like e-commerce website:

1. What should you know before starting this project assignment?

You should know following topics, before starting this project assignment:

2. Which functionalities will we automate in this project assignment?

We will learn to automate multiple test scenarios of an e-commerce website in this project like:
  • Learn to automate User Registration and Login using Selenium commands
  • Learn to automate clicking the slide-over menus with Mouse hover command
  • Learn to automate scroll action using Mouse Events of Actions class
  • Learn to automate Search Product
  • Learn to automate Add to Cart Page
  • At last we'll learn to automate end-to-end functionality of Buy Product,   
  • And we'll automate some other website filters

3. Create Test Plan for Amazon.com like E-Commerce Website

Let's create a Test Plan for the functionalities which we are going to automate. You can create positive and negative test cases around the following scenarios. We will be using this dummy Online shopping website for this Project Assignment - http://automationpractice.com/index.php . This website is works exactly similar to any real e-commerce website like, amazon or flipkart.

3.1 Testing Registration and Login of the Online Shopping Website

  • Can a guest purchase product as guest user?
  • Can a guest able to  register on the website easily?
  • Once registered,  can a user able to login successfully?
  • Can a registered user able to view all the products listed on the website?
  • Are the user sessions being maintained for the intended time period?
  • Is the user’s session timing out and expiring after defined time?
  • Is registered user is able to view and modify it's user account information?
  • Is registered user is not able to access user account after logout?

3.2 Testing Search feature of the Online Shopping Website

  • Is website having multiple filters to search products like., price range, category, brands etc.?
  • Are relevant Products are displaying after applying single or multiple search filters?
  • Is there an option to display fixed number of products on search page?
  • Is there any sort option available on the search page and is that working properly?

3.3 Testing the Product details Page of the Online Shopping Website

  • Is the page displaying all the product's information on that page?
  • Can a user select different size, color and quantity of the product?
  • Is the page displaying any offers if applicable to the product?
  • Is the page displaying the stock information correctly?
  • Is the product getting added cart after doing so?

3.4 Testing the Shopping Cart of the e-commerce website

  • Is the correct price getting displayed in the shopping cart for the selected product/s?
  • Is there an option to apply coupon codes?
  • Can a user increase or decrease the quantity of  a product from the shopping cart?
  • Can a user remove the product from the shopping cart?

3.5 Testing the Checkout Flow and Order Confirmation of the Online shopping website

  • Does user able to enter shipping and billing information or is it auto filled, if the user already saved it?
  • Are all the supported payments methods working?
  • Is user's sensitive information handled securely, like credit/debit card info, address, bank details etc.
  • Is the user receives email or sms on order confirmation?
  • Can user track the order?

Selenium Video Tutorials Playlist (YouTube)



4. Automate 'User Registration and Login' of amazon like e-commerce website

This section is focused on covering all the scenarios for User Registration for an e-commerce website. In this assignments you will learn the different Selenium commands which are used to handle the web form. A web form is generally a collection of web elements like, text boxes, radio buttons, selection box etc. And in web testing, we mostly face web forms and our 90% of testing revolves around web forms. We are going to cover both positive and negative scenarios for User Registration.

Positive Scenario

1. Test Case - Automate User Registration process of e-commerce website.

Steps to Automate:
2. Click on sign in link.
3. Enter your email address in 'Create and account' section.
4. Click on Create an Account button.
5. Enter your Personal Information, Address and Contact info.
6. Click on Register button.
7. Validate that user is created.

Selenium code for User RegistrationThis code is contributed by Uday. We have provided the code for only positive scenario, you should try automating negative scenarios yourself.

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import io.github.bonigarcia.wdm.WebDriverManager;

public class EcomSignUp {

 public static void main(String[] args) {
 
  WebDriverManager.chromedriver().setup();
  WebDriver driver=new ChromeDriver();
  String URL="http://automationpractice.com/index.php";

  driver.get(URL);
  driver.manage().timeouts().implicitlyWait(2000, TimeUnit.MILLISECONDS);
  driver.manage().window().maximize();
  
  //Click on Sign in
  driver.findElement(By.linkText("Sign in")).click();
  
  //Enter email address
  driver.findElement(By.cssSelector("[name='email_create']")).sendKeys("test1249@test.com");
  
  //Click on "Create an account"
  driver.findElement(By.xpath("//button[@name=\"SubmitCreate\"]")).click();
  
  //Select Title
  driver.findElement(By.xpath("//input[@id=\"id_gender1\"]")).click();
  driver.findElement(By.name("customer_firstname")).sendKeys("Test User");
  driver.findElement(By.name("customer_lastname")).sendKeys("Vsoft");
  driver.findElement(By.id("passwd")).sendKeys("PKR@PKR");
  
  // Enter your address
  driver.findElement(By.id("firstname")).sendKeys("Test User");
  driver.findElement(By.id("lastname")).sendKeys("Vsoft");
  driver.findElement(By.id("company")).sendKeys("Vsoft");
  driver.findElement(By.id("address1")).sendKeys("Test 81/1,2nd cross");
  driver.findElement(By.id("city")).sendKeys("XYZ");
  
  // Select State
  WebElement statedropdown=driver.findElement(By.name("id_state"));
  Select oSelect=new Select(statedropdown);
  oSelect.selectByValue("4");

  driver.findElement(By.name("postcode")).sendKeys("51838");
  
  // Select Country
  WebElement countrydropDown=driver.findElement(By.name("id_country"));
  Select oSelectC=new Select(countrydropDown);
  oSelectC.selectByVisibleText("United States");
  
  //Enter Mobile Number
  driver.findElement(By.id("phone_mobile")).sendKeys("234567890");
  driver.findElement(By.xpath("//input[@name=\"alias\"]")).clear();
  driver.findElement(By.xpath("//input[@name=\"alias\"]")).sendKeys("Office");
  driver.findElement(By.name("submitAccount")).click();
  String userText=driver.findElement(By.xpath("//*[@id=\"header\"]/div[2]/div/div/nav/div[1]/a")).getText();

  // Validate that user has created
  if(userText.contains("Vsoft")) {
   System.out.println("User Verified,Test case Passed");
  }
  else {
   System.out.println("User Verification Failed,Test case Failed");
  }
 }
}

Negative Scenarios

2. Test Case - Verify invalid email address error.

Steps to Automate:
2. Click on sign in link.
3. Enter invalid email address in the email box and click enter.
4. Validate that an error message is displaying saying "Invalid email address."

3. Test Case - Verify error messages for mandatory fields.

Steps to Automate:
2. Click on sign in link.
3. Enter email address and click Register button.
4. Leave the mandatory fields (marked with *) blank and click Register button.
5. Verify that error has been displayed for the mandatory fields.

4. Test Case - Verify error messages for entering incorrect values in fields.

Steps to Automate:
2. Click on sign in link.
3. Enter email address and click Register button.
4. Enter incorrect values in fields like., enter numbers in first and last name, city field etc., and enter alphabets in Mobile no, Zip postal code etc., and click on 'Register' button.
5. Verify that error messages fpr respective fields are displaying.
Try automating the above scenarios using Selenium commands, if you face any difficulty please refer the Selenium Tutorial series.



5. Automate 'Search Product' feature of amazon like e-commerce website with Selenium

1. Test Case - Automate 'Search Product' feature of e-commerce website with Selenium.

Steps to Automate:
2. Move your cursor over Women's link.
3. Click on sub menu 'T-shirts'
4. Get Name/Text of the first product displayed on the page.
5. Now enter the same product name in the search bar present on top of page and click search button.
6. Validate that same product is displayed on searched page with same details which were displayed on T-Shirt's page.

Automation Code for Product Search: Following code is contributed by Uday.

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

import io.github.bonigarcia.wdm.WebDriverManager;

public class EcomPractice2 {
 
 public static void main(String[] args) throws InterruptedException{

  WebDriverManager.chromedriver().setup();
  WebDriver driver=new ChromeDriver();
  String URL="http://automationpractice.com/index.php";

  driver.get(URL);
  driver.manage().window().maximize();
  
  // Initialise Actions class object
  Actions actions=new Actions(driver);
  driver.manage().timeouts().implicitlyWait(2000, TimeUnit.MILLISECONDS);
  WebElement womenTab=driver.findElement(By.linkText("WOMEN"));
  WebElement TshirtTab=driver.findElement(By.xpath("//div[@id='block_top_menu']/ul/li[1]/ul/li[1]/ul//a[@title='T-shirts']"));
  actions.moveToElement(womenTab).moveToElement(TshirtTab).click().perform();
  Thread.sleep(2000);
  
  // Get Product Name
  String ProductName=driver.findElement(By.xpath("/html[1]/body[1]/div[1]/div[2]/div[1]/div[3]/div[2]/ul[1]/li[1]/div[1]/div[2]/h5[1]/a[1]")).getText();
  System.out.println(ProductName);
  driver.findElement(By.id("search_query_top")).sendKeys(ProductName);
  driver.findElement(By.name("submit_search")).click();
  
  // Get Name of Searched Product
  String SearchResultProductname=driver.findElement(By.xpath("/html[1]/body[1]/div[1]/div[2]/div[1]/div[3]/div[2]/ul[1]/li[1]/div[1]/div[2]/h5[1]/a[1]")).getText();

  // Verify that correct Product is displaying after search
  if(ProductName.equalsIgnoreCase(SearchResultProductname)) {
   System.out.println("Results Matched;Test Case Passed");
  }else{
   System.out.println("Results NotMatched;Test Case Failed");
  }
  
  // Close the browser
  driver.close();
 }

}


6. Automate 'Buy Product' feature of amazon like e-commerce website with Selenium

Most important functionality of an e-commerce website is buying a product, which includes various steps like select product, select size/color, add to cart, checkout etc. You will find every test scenario along with automation code in following section.

1. Test Case - Automate end-to-end "Buy Product" feature of the e-commerce website.

Steps to Automate:
2. Login to the website.
3. Move your cursor over Women's link.
4. Click on sub menu 'T-shirts'.
5. Mouse hover on the second product displayed.
6. 'More' button will be displayed, click on 'More' button.
7. Increase quantity to 2.
8. Select size 'L'
9. Select color.
10. Click 'Add to Cart' button.
11. Click 'Proceed to checkout' button.
12. Complete the buy order process till payment.
13. Make sure that Product is ordered.

Following code for Purchase Product is contributed by Uday:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

import io.github.bonigarcia.wdm.WebDriverManager;

public class EcomExpert {

 public static void main(String[] args){

  WebDriverManager.chromedriver().setup();
  WebDriver driver=new ChromeDriver();
  String URL="http://automationpractice.com/index.php";
  
  // Open URL and Maximize browser window
  driver.get(URL);
  driver.manage().window().maximize();
  driver.manage().timeouts().implicitlyWait(3000, TimeUnit.MILLISECONDS);

  //Click on Sign in
  driver.findElement(By.linkText("Sign in")).click();
  //Login
  driver.findElement(By.id("email")).sendKeys("test1249@test.com");
  driver.findElement(By.id("passwd")).sendKeys("PKR@PKR");
  driver.findElement(By.id("SubmitLogin")).click();
  //Click on Women
  driver.findElement(By.linkText("WOMEN")).click();

  WebElement SecondImg=driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div[2]/ul/li[2]/div/div[1]/div/a[1]/img"));
  WebElement MoreBtn=driver.findElement(By.xpath("/html/body[1]/div[1]/div[2]/div[1]/div[3]/div[2]/ul/li[2]/div[1]/div[2]/div[2]/a[2]"));
  Actions actions=new Actions(driver);
  actions.moveToElement(SecondImg).moveToElement(MoreBtn).click().perform();

  //Change quantity by 2
  driver.findElement(By.id("quantity_wanted")).clear();
  driver.findElement(By.id("quantity_wanted")).sendKeys("2");

  //Select size as L
  WebElement Sizedrpdwn=driver.findElement(By.xpath("//*[@id='group_1']"));
  Select oSelect=new Select(Sizedrpdwn);
  oSelect.selectByVisibleText("M");

  //Select Color
  driver.findElement(By.id("color_11")).click();

  //Click on add to cart
  driver.findElement(By.xpath("//p[@id='add_to_cart']//span[.='Add to cart']")).click();

  //Click on proceed
  driver.findElement(By.xpath("/html//div[@id='layer_cart']//a[@title='Proceed to checkout']/span")).click();
  //Checkout page Proceed
  driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div/p[2]/a[1]/span")).click();
  driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div/form/p/button/span")).click();
  //Agree terms&Conditions
  driver.findElement(By.xpath("//*[@id=\"cgv\"]")).click();
  driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div/div/form/p/button/span")).click();

  //Click on Payby Check
  driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div/div/div[3]/div[2]/div/p/a")).click();
  //Confirm the order
  driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[3]/div/form/p/button/span")).click();

  //Get Text
  String ConfirmationText=driver.findElement(By.xpath("//div[@id='center_column']/p[@class='alert alert-success']")).getText();
  
  // Verify that Product is ordered
  if(ConfirmationText.contains("complete")) {
   System.out.println("Order Completed: Test Case Passed");
  }
  else {
   System.out.println("Order Not Successfull: Test Case Failed");
  }

 }
}

You should try automating the below mentioned scenarios yourself for your practice. You can also send your code to us via email or post in the comment section, we would be happy to share your hard work on our website with your credentials. 

2. Test Case - Verify that 'Add to Wishlist' only works after login.

Steps to Automate:
2. Move your cursor over Women's link.
3. Click on sub menu 'T-shirts'.
4. Mouse hover on the second product displayed.
5. 'Add to Wishlist' will appear on the bottom of that product, click on it.
6. Verify that error message is displayed 'You must be logged in to manage your wish list.'

3. Test Case - Verify that Total Price is reflecting correctly if user changes quantity on 'Shopping Cart Summary' Page.

Steps to Automate:
2. Login to the website.
3. Move your cursor over Women's link.
4. Click on sub menu 'T-shirts'.
5. Mouse hover on the second product displayed.
6. 'More' button will be displayed, click on 'More' button.
7. Make sure quantity is set to 1.
8. Select size 'M'
9. Select color of your choice.
10. Click 'Add to Cart' button.
11. Click 'Proceed to checkout' button.
12. Change the quantity to 2.
13. Verify that Total price is changing and reflecting correct price.
Similar way you can add few more test cases.

Automate Google Search << Previous  ||  Next>>  Automate multiple browser tabs


Author
Passionately working as an Automation Developer from more than a decade. Let's connect LinkedIn.

    Follow Techlistic

    YouTube Channel | Facebook Page | Telegram Channel | Quora Space
    Feel free to ask queries or share your thoughts in comments or email us.

    Comments

    1. Great job for publishing such a nice article. Your article isn’t only useful but it is additionally really informative. Thank you because you have been willing to share information with us. Buy Internet Banking Php Script

      ReplyDelete
    2. You'll be able to make intelligent decisions to get your sites ranked higher, drive in more traffic, capture more leads and make more sales. inwap com

      ReplyDelete
    3. Excellent Article, I just read and shared it to my friends as it is very useful for everyone. I will learn a lot of new stuff right from this article. You can check our services of

      ecommerce services provider in india

      ecommerce solutions services

      ReplyDelete
    4. Very informative blog, It’s very useful for each and everyone who is running a warehouse.
      Please take some to time visit my site to get a Warehouse for rent in Chennai

      ReplyDelete
    5. This is very informative and interesting platform for me to Build Your Own Website To Sell Products. Thank you for such a wonderful article and for sharing. God bless you.!

      ReplyDelete
    6. With fewer healthy people buying Insurance, and fewer Insurance companies offering it, the individual Insurance market would start to destabilize right away, potentially causing the perennially-discussed death spirals. What Is Citizen Insurance In Florida

      ReplyDelete
    7. great post, nice to read ,take new information and experience to read it
      HDFC bank share price

      ReplyDelete
    8. Several automation aspects covered

      ReplyDelete
    9. The context of this content is really good. Thank you for sharing this type of awareness with us. In this article, you shared much informative knowledge on multiplication activities. Take look at this tooweb design agency dubai . Thanks!

      ReplyDelete
    10. Amazon keyword research is essential in creating an optimized ... Learn how to choose keywords for SEO with Amazon research tool AMZScout. Zoncomoare Keyword Search Tool for Amazon

      ReplyDelete
    11. Very useful post more cases like this travel websites and all

      ReplyDelete
    12. Wow, marvelous weblog layout! How lengthy have you been blogging for buy event product online in USA? you made blogging glance easy. The overall look of your website is fantastic, as well as the content!

      ReplyDelete

    Post a Comment

    Popular posts from this blog

    10+ Best Demo Websites for Selenium Automation Testing Practice

    How to Automate Google Search with Selenium WebDriver

    Handle Static and Dynamic Web Table in Selenium WebDriver

    25+ Most Important Selenium WebDriver Commands Tutorial

    Automate GoDaddy.com Features with Selenium WebDriver

    Top 10 Highly Paid Indian Origin CEO's in USA

    50+ Most Important Selenium WebDriver Interview Questions and Answers