Cách tự động đăng nhập vào website sử dụng Selenium với Chrome trong Node.js
Hướng dẫn cách sử dụng Selenium trong Node.js để tự động đăng nhập vào một website. Bài viết sẽ chỉ ra cách thiết lập môi trường và viết mã Node.js để điều khiển trình duyệt Chrome.
Bài viết này sẽ hướng dẫn bạn cách sử dụng thư viện Selenium WebDriver trong Node.js để tự động đăng nhập vào một trang web bằng trình duyệt Chrome. Chúng ta sẽ sử dụng các phương thức để tìm các trường thông tin đăng nhập, nhập dữ liệu và gửi form một cách tự động.
Mã Node.js:
const { Builder, By, Key, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const path = require('path');
// Khởi tạo trình duyệt Chrome và cài đặt cấu hình
const service = new chrome.ServiceBuilder(path.resolve('chromedriver')).build();
chrome.setDefaultService(service);
(async function login() {
let driver = await new Builder().forBrowser('chrome').build();
try {
// Mở trang web cần đăng nhập
await driver.get('https://example.com/login');
// Tìm và nhập tên người dùng
await driver.findElement(By.name('username')).sendKeys('yourUsername');
// Tìm và nhập mật khẩu
await driver.findElement(By.name('password')).sendKeys('yourPassword');
// Nhấn nút đăng nhập
await driver.findElement(By.css('button[type="submit"]')).click();
// Đợi cho đến khi trang được chuyển hướng hoặc có yếu tố xác định việc đăng nhập thành công
await driver.wait(until.titleIs('Dashboard'), 10000);
} finally {
// Đóng trình duyệt
await driver.quit();
}
})();
Giải thích chi tiết từng dòng code:
-
const { Builder, By, Key, until } = require('selenium-webdriver');
: Import các thư viện Selenium cần thiết. -
const chrome = require('selenium-webdriver/chrome');
: Import thư viện điều khiển Chrome. -
const service = new chrome.ServiceBuilder(path.resolve('chromedriver')).build();
: Khởi tạochromedriver
để điều khiển Chrome. -
let driver = await new Builder().forBrowser('chrome').build();
: Khởi tạo trình duyệt Chrome. -
await driver.get('https://example.com/login');
: Mở trang đăng nhập của website. -
await driver.findElement(By.name('username')).sendKeys('yourUsername');
: Nhập tên đăng nhập vào trường có thuộc tínhname="username"
. -
await driver.findElement(By.name('password')).sendKeys('yourPassword');
: Nhập mật khẩu vào trường có thuộc tínhname="password"
. -
await driver.findElement(By.css('button[type="submit"]')).click();
: Nhấn vào nút đăng nhập. -
await driver.wait(until.titleIs('Dashboard'), 10000);
: Đợi cho đến khi tiêu đề của trang chuyển thành 'Dashboard' (sau khi đăng nhập thành công).
Yêu cầu hệ thống:
- Node.js: phiên bản 12 trở lên.
-
Selenium WebDriver: Cài qua npm với lệnh
npm install selenium-webdriver
. - ChromeDriver: Cần tải phiên bản phù hợp với trình duyệt Chrome đang sử dụng và đặt đường dẫn trong code.
Cách cài đặt các thư viện để chạy được đoạn mã trên:
- Cài đặt Selenium WebDriver:
npm install selenium-webdriver
- Tải ChromeDriver từ trang chính thức và đảm bảo nó tương thích với phiên bản Chrome hiện tại.
- Đảm bảo rằng ChromeDriver được đặt trong biến môi trường hoặc cấu hình đúng đường dẫn trong mã.
Lời khuyên:
- Hãy đảm bảo rằng bạn sử dụng phiên bản ChromeDriver tương thích với phiên bản trình duyệt Chrome hiện tại.
- Nếu gặp lỗi liên quan đến phiên bản, hãy kiểm tra lại phiên bản Selenium WebDriver và ChromeDriver.
- Sử dụng file
.env
để bảo mật thông tin đăng nhập trong các dự án thực tế.