Selenium Grid 3 là một công cụ khá nổi tiếng của Selenium, được dùng để triển khai cho nhiều dự án Automation Test khác nhau. Trong bài này, chúng ta cùng tìm hiểu chi tiết về cách cài đặt Selenium Grid 3 trên windows, cũng như những lưu ý khi cấu hình nó.
Bài hướng dẫn này sẽ sử dụng Selenium Grid 3 và được triển khai trên nhiều máy Windows khác nhau, mỗi máy sẽ được cài đặt một trình duyệt phổ biến như Chrome và Firefox.
Hình 1.1: Hệ thống tổng thể Selenium Grid 3
Đặc tả hệ thống Selenium Grid
Đặc tả của hệ thống Selenium Grid chúng ta sẽ triển khai như sau:
-
3 máy Windows 10 Enterprise và OS Build là 19041.867
-
3 máy này đều chung 1 network với IP address:
- Windows 01: 192.168.12.1
- Windows 02: 192.168.12.2
- Windows 03: 192.168.12.3
Hình bên dưới là hệ thống Selenium Grid chúng ta muốn triển khai:
Hình 1.2: Hình mô tả hệ thống Selenium Grid chúng ta sẽ triển khai
Theo như cấu hình trên, ta có danh sách Hub và các Nodes như sau:
Tên | IP Address |
---|---|
Hub | 192.168.12.1 |
Chrome Node | 192.168.12.2 |
Firefox Node | 192.168.12.3 |
Setup hệ thống Selenium Grid
Sau khi có được đặc tả về Hub và Nodes của hệ thống Selenium Grid, ở phần này chúng ta sẽ đi qua chi tiết các bước để triển khai hệ thống này.
Ở tất cả các máy (bao gồm cả Selenium Hub và Selenium Nodes) chúng ta tiến hành 2 việc sau:
- Download Selenium Standalone Server vào trong folder bất kỳ, trong bài này chúng ta đặt ở folder
C:/GRID
- Download và install JDK (Java SE Development Kit) nếu chưa cài đặt
Hình 1.3: Download Selenium Server (Grid) hay còn gọi là Selenium Standalone Server
Hình 1.4: Download Selenium Standalone Server
Tiếp theo, chúng ta sẽ tiến hành triển khai Selenium Hub, sau đó là các Selenium Nodes.
Khởi tạo Selenium Hub
Bước 1. Truy cập vào máy 192.168.12.1 sử dụng Remote Desktop để truy cập vào(đã chỉ định làm Selenium Hub)
Bước 2. Mở Command Prompt của Windows, cd
tới folder C:/GRID
, và run command sau để tiến hành khởi tạo selenium Hub
java -jar C:/GRID/selenium-server-standalone-3.141.59.jar -role hub
Hình 1.5: Mô tả dòng lệnh và kết quả khởi chạy thành công Selenium Hub
[Mẹo] Tạo file có thể thực thi .bat cho Selenium Hub
Để có thể thực thi câu lệnh khởi tạo selenium hub một cách nhanh chóng và tiện lợi, ở folder C:/GRID
chúng ta có thể tạo tập tin có thể thực thi với phần mở rộng .bat
bằng một Text Editor bất kỳ, ví dụ: selenium_hub_register.bat
như Hình 1.6 bên dưới. Và khi cần khởi tạo chúng ta chỉ cần double click vào nó để khởi chạy thay vì gõ câu lệnh thông qua cmd windows.
Hình 1.6: Đóng gói câu lệnh khởi tạo Selenium Hub thành tệp có thể thực thi
Với cách này, các bạn sẽ không cần phải nhớ câu lệnh cho những lần chạy sau. Và ngoài ra, bạn có thể sử dụng mẹo này khi khởi chạy Chrome Node và Firefox Node.
Sau khi bạn đã tạo thành công file selenium_hub_register.bat
, double click vào file để khởi tạo Selenium Hub
Hình 1.7: Kết quả khởi tạo Selenium Hub thông qua tệp có thể thực thi
Bước 3. Xác thực selenium HUB khởi tạo thành công
Để xác định selenium Hub đã được khởi tạo thành công ngoài kết quả trả về như Hình 1.6, Hình 1.7, chúng ta còn có thể kiểm tra thông qua browser với url: http://192.168.1.1:4444/grid/console
Hình 1.8: Kết quả trả về khi dùng browser kiểm tra selenium Hub
Lưu ý: Port mặc định của Selenium Grid là 4444
→ Tới bước này có nghĩa là bạn đã khởi tạo Hub thành công, và chúng ta sẽ tiếp tục triển khai các Nodes
Khởi tạo Selenium Nodes
Selenium Chrome Node (192.168.1.2)
Bước 1. Cài đặt Chrome browser
- Truy cập vào máy 192.168.1.2
- Tạo
C:/GRID
folder - Download và install Google Chrome browser
Bước 2. Xác định major version của Google Chrome đã được install ở Bước 1
Mở Google Chrome, truy cập chrome://settings/help
, lúc này thông tin major version của Google Chrome sẽ hiển thị như Hình 1.9 => major version của Chrome sẽ là: 89
Hình 1.9: Kết quả trả về khi dùng browser kiểm tra major version của Chrome
Hầu hết các Browser driver chỉ hỗ trợ cho 1 số version nhất định của browser. Do đó, việc xác định Chrome version sẽ giúp chúng ta sử dụng chính xác Browser driver.
Bước 3. Download chrome driver tương ứng với major version Chrome đã xác định ở Bước 2
Truy cập vào website https://chromedriver.chromium.org/downloads, dựa vào Chrome version đã lấy được ở Bước 2 là 89 và hệ điều hành Windows, chúng ta sẽ download Chrome Driver version tương ứng như Hình 2.0 và Hình 2.1 bên dưới
Hình 2.0: Lựa chọn Chrome driver tương ứng với major version Chrome
Hình 2.1: Lựa chọn Chrome driver tương ứng với OS
Sau khi download thành công file chromedriver_win32.zip
bạn hãy extract file zip vào folder C:/GRID
. Lúc này trong C:/GRID
sẽ có file chromedriver.exe
Bước 4. Cấu hình Selenium Chrome Node
Tạo file json chứa các tham số khởi tạo cho Selenium chrome node
Ở folder C:/GRID
, chúng ta dùng editor bất kỳ tạo để tạo ra file nodeconfig_chrome.json
, file này sẽ chứa các thông tin cấu hình cho Selenium Chrome Node.
File nodeconfig_chrome.json
bao gồm thông tin cấu hình như sau:
{
"capabilities": [
{
"browserName": "chrome",
"maxInstances": 10,
"seleniumProtocol": "WebDriver",
"platform": "WIN10"
}
],
"url": "http://192.168.1.2:5555/wd/hub",
"port": "5555",
"host": "192.168.1.2",
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"register": true,
"registerCycle": 5000
}
Lưu ý: IP Address của 2 tham số url
và host
chính là IP Address của máy Node. Trong ví dụ trên, IP Address của máy Chrome Node là 192.168.1.2
Rất nhiều thông tin có thể chúng ta chưa hiểu khi mới đọc qua. Không sao cả, hiện tại chúng ta chú ý tham số maxInstances
, giá trị của tham số này là 10, điều này có nghĩa là số lượng Chrome instances tối đa có thể khởi chạy cùng 1 lúc là 10 instances. Dễ hiểu hơn, đó chính là cửa sổ Chrome tối đa có thể được mở cùng lúc trên Chrome Node này là 10.
Hình 2.2: Số lượng chrome browser của selenium Chrome node đang chạy
Thực hiện lệnh để khởi chạy và đăng ký Selenium Chrome node
Mở Command Prompt của Windows, cd vào C:/GRID
và thực hiện lệnh để khởi chạy Selenium Chrome node
java -Dwebdriver.chrome.driver="C:/GRID/chromedriver.exe" -jar C:/GRID/selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.1:4444/grid/register -nodeConfig "C:/GRID/nodeconfig_chrome.json"
Trong câu lệnh trên, bạn hãy chú ý một số tham số quan trọng như:
-Dwebdriver.chrome.driver="C:/GRID/chromedriver.exe"
sẽ chỉ tới Chrome Driver
-hub http://192.168.1.1:4444/grid/register
Đây là đường dẫn của máy Selenium Hub, với port mặc định là 4444
-nodeConfig "C:/GRID/nodeconfig_chrome.json"
chỉ tới file nodeconfig_chrome.json
mà chúng ta đã khởi tạo ở trên
Nếu kết nối thành công, bạn sẽ nhận được message là “The node is registered to the hub and ready to use“
Hình 2.4: Kết quả thực thi file thành công và log message trả về
Để kiểm Selenium Chrome Node liên kết với Selenium Hub thành công hay chưa, chúng ta truy cập lại đường dẫn http://192.168.1.1:4444/grid/console (Selenium hub machine)
Hình 2.5: Selenium Grid sau khi đăng ký selenium chrome node thành công
→ Với kết quả như trên, bạn đã khởi tạo và liên kết thành công Chrome Node
Selenium Firefox Node (192.168.1.3)
Đối với Selenium Firefox Node, chúng ta tiến hành một số bước tương tự như Selenium Chrome Node. Cụ thể như sau
Bước 1. Download và install Firefox browser
Truy cập vào máy 192.168.1.3 và cài đặt Firefox browser
Bước 2. Download version mới nhất của Firefox Driver (tên gọi khác là geckco driver)
Hình 2.6: Download firefox driver tương ứng với Firefox installed
Sau đó extract file geckodriver-v0.29.0-win64.zip
vào C:/GRID
và lúc này file geckodriver.exe
sẽ tạo ra ở C:/GRID
Bước 3. Cấu hình Selenium Firefox Node thông qua Json file
Tại folder C:/GRID
, tạo file nodeconfig_firefox.json
, với nội dung như sau:
{
"capabilities": [
{
"browserName": "firefox",
"maxInstances": 10,
"seleniumProtocol": "WebDriver",
"platform": "WIN10"
}
],
"url": "http://192.168.1.3:5555/wd/hub",
"port": "5555",
"host": "192.168.1.3",
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"register": true,
"registerCycle": 5000
}
Lưu ý: IP Address của 2 tham số url
và host
chính là IP Address của máy Node. Trong ví dụ trên, IP Address của máy Firefox Node là 192.168.1.3
Bước 4. Khởi chạy Selenium Firefox node để đăng ký vào Selenium Hub
Mở Command Prompt, cd vào C:/GRID
và thực hiện lệnh để khởi chạy Selenium Firefox node
java -Dwebdriver.gecko.driver="C:/GRID/geckodriver.exe" -jar C:/GRID/selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.1:4444/grid/register -nodeConfig "C:/GRID/nodeconfig_firefox.json"
Hình 2.6.2: Cmd thực thi và kết quả đăng ký Selenium Firefox node
Bước 5. Kiểm tra Selenium Hub đã đăng ký Selenium Firefox node
Chúng ta truy cập lại đường dẫn http://192.168.1.1:4444/grid/console (Selenium hub machine). Nếu thành công, lúc này Selenium Grid chúng ta sẽ như Hình 2.7
Hình 2.7: Selenium Grid sau khi đăng ký selenium Firefox node
Sử dụng Selenium Grid đã set up
Tới thời điểm này, hệ thống Selenium Grid đã sẵn sàng. Bạn có thể kiểm tra tình trạng hoạt động của Selenium Grid với automation testing framework mà bạn đang sử dụng, hoặc bạn có thể sử dụng cách sau:
-
Install NodeJS trên máy có cùng network với Selenium Grid (có thể sử dụng chính máy HUB 192.168.1.1)
-
Tạo folder mới, vd:
C:/test
, trong folder này tạo 1 filehello_selenium_chrome.js
, với nội dung như sauconst { Builder, Capabilities } = require("selenium-webdriver"); var capabilities = Capabilities.chrome(); (async function helloSelenium() { let driver = new Builder() .usingServer("http://192.168.1.1:4444/wd/hub") .withCapabilities(capabilities) .build(); try { await driver.get('http://www.google.com'); // Below command is used to check the result on Node machine only await new Promise(resolve => setTimeout(resolve, 5000)); } finally { await driver.quit(); } })();
Lưu ý: Tại command
usingServer
, bạn hãy thay đổi IP Address với IP Address của máy Hub mà bạn đang triển khai. -
Mở một Command Prompt mới và cd tới folder
C:/test
-
Install required package selenium-webdriver bằng câu lệnh sau
npm init -y && npm install selenium-webdriver
-
Đảm bảo rằng hệ thống Selenium Grid vẫn đang được khởi chạy. Sau đó tiến hành thực thi file
hello_selenium_chrome.js
với câu lệnh saunode hello_selenium_chrome.js
Ngay lúc này, tại máy 192.168.1.2 bạn sẽ thấy 1 cửa sổ Chrome sẽ được mở lên và truy cập vào URL http://www.google.com
==> như vậy chứng tỏ là hệ thống Selenium Grid của chúng ta đã hoạt động như mong đợi.
Một số lưu ý khi triển khai Selenium Grid
- Quá trình maintain Selenium Grid sẽ tốn nhiều thời gian hơn vì version của driver phụ thuộc vào version của browser. Do đó, một khi version của browser được update, bạn cũng phải update driver tương ứng
- Vì Selenium Grid được triển khai trên nhiều máy, do đó phải đảm bảo các máy Nodes luôn được mở và có thể truy cập được từ máy Hub.
- Đối với các legacy browser như IE, thì việc bất ổn định khi thực thi test case thường xuyên xảy ra.
Kết bài
Qua bài hướng dẫn này, chúng ta vừa đi qua chi tiết các bước để triển khai hệ thống Selenium Grid. Công việc cài đặt và sử dụng Selenium Grid trải qua khá nhiều bước còn nhiều thông số chưa giải thích nên cần nhiều thời gian để hiểu rõ và maintain hệ thống này.
Triển khai Selenium Grid không khó nhưng việc maintain Selenium Grid tốn nhiều thời gian và công sức. Do đó bạn cần xác định rõ mục tiêu và sự cần thiết của dự án trước khi quyết định sử dụng Selenium Grid. Chúc bạn có những trải nghiệm thú vị, đáng nhớ!