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
- Download ở đây nha.
- 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
- Nếu muốn luôn khởi chạy khi mở docker thì chạy code này:
docker run -d -p 4444:4444 --shm-size="2g" --restart on-failure 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”