[SE] – Run Selenium TestCases in Docker Container

Table of Contents

Như tiêu đề, đây là hướng dẫn để chạy Selenium grid trên docker giúp các bạn có thể chạy browser trên docker phục vụ một số yêu cầu cá nhân của mình, ở đây mình làm để giúp mình khi run testcase không bị chiếu chuột và màng hình nữa, trong thời gian run mình có thể làm các việc khác.

Bước 1: Download và install Docker desktop trên Windows

  • Cài đặt và khởi chạy như bình thường – có thể yêu cầu restart lại máy tính

Bước 2: Cài đặt

  • Mở app docker desktop lên rồi mới cài nha
  • Sử dụng cmd để cài đặt
docker pull selenium/standalone-chrome
  • Chạy docker standalone-chrome bằng cmd
docker run -d -p 4444:4444 --shm-size="2g" selenium/standalone-chrome
  • Chuyển qua app Docker desktop để vào giao diện Selenium grid

Như vầy là ok nha :

Bước 3: Viết code demo thôi

  • Mở selenium lên rồi test
package webdriver;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Topic_00_RemoteWebDriver {
	WebDriver driver;
	@BeforeClass
	public void beforeClass() throws MalformedURLException {
		DesiredCapabilities cap = new DesiredCapabilities();
		cap.setBrowserName(BrowserType.CHROME);
		driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), cap);
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
		driver.manage().window().maximize();
		driver.get("https://demo.guru99.com/v4/");
	}

	@Test
	public void TC_01_ValidateCurrentUrl() {
		// Login Page Url matching
		String loginPageUrl = driver.getCurrentUrl();
		System.out.println(loginPageUrl);
		Assert.assertEquals(loginPageUrl, "https://demo.guru99.com/v4/");
	}

	@Test
	public void TC_02_ValidatePageTitle() {
		// Login Page title
		String loginPageTitle = driver.getTitle();
		System.out.println(loginPageTitle);
		Assert.assertEquals(loginPageTitle, "Guru99 Bank Home Page");
	}

	@Test
	public void TC_03_LoginFormDisplayed() {
		// Login form displayed
		Assert.assertTrue(driver.findElement(By.xpath("//form[@name='frmLogin']")).isDisplayed());
	}

	@AfterClass
	public void afterClass() {
		driver.quit();
	}

}
  • Chạy testcase thì Selenium grid sẽ tạo sessions mới, bấm vào hình cam để kết nối vnc – Pass is “secret”

Bình luận