Xin chào tất cả mọi người! Đọc email trong các bài kiểm tra tự động là một thủ thuật mà bạn có thể cần biết cách thực hiện trong nhiều dự án. Đây là lý do và cách giải quyết nó… Sao nó lại quan trọng? Chà, nếu hệ thống gửi email - bạn có thể muốn xác minh rằng chúng đang được gửi và nội dung đúng, bao gồm cả các liên kết có thể nhấp vào. Vì vậy, đây là những tình huống thông thường khi bạn cần điều này: Đăng ký. Rất nhiều nền tảng gửi email xác nhận sau khi bạn tạo tài khoản và bạn cần nhấp vào liên kết xác nhận từ email. Hóa đơn. Nếu ứng dụng của bạn thực hiện bất kỳ khoản thanh toán nào - họ thường gửi séc hoặc hóa đơn qua email, vì vậy bạn cũng có thể muốn xem liệu nội dung của họ có chính xác hay không. Kết quả. Giống như kết quả xét nghiệm y tế. Theo kinh nghiệm của tôi - một số bệnh viện gửi email kèm theo kết quả xét nghiệm sau khi hoàn thành (hoặc ít nhất là một liên kết đến trang cá nhân nơi bạn có thể xem báo cáo). … Tất nhiên, đây không phải là danh sách đầy đủ - đây chỉ là những trường hợp sử dụng mà tôi gặp nhiều nhất trong sự nghiệp của mình. Việc không xác minh các trường hợp này có thể dẫn đến việc người dùng không nhận được email hoặc nhận được thông tin sai trong email. Trong một trong các dự án, nó đã giúp chúng tôi tìm thấy sớm mã thông báo đã hết hạn. SendGrind Sự phức tạp của việc đọc email trong các bài kiểm tra là gì? Đọc email là một việc khó nhưng không phải là không thể. Các ứng dụng email ban đầu sử dụng để tìm nạp email từ máy chủ nhưng có một vấn đề nhỏ - nó sẽ xóa email khỏi máy chủ sau khi chúng được tải xuống. POP3 Sau đó, giao thức xuất hiện - nó cho phép bạn chỉ cần đọc email từ máy chủ. IMAP Vấn đề là - hoặc khi bạn kết nối lần đầu tiên (chẳng hạn như khi bạn khởi động lại quá trình kiểm tra tự động). một số dịch vụ cấm các giao thức này bắt bạn xác nhận danh tính của mình Mặt khác, một số dịch vụ như cung cấp để thao tác email của bạn, nhưng có một vấn đề khác - tài liệu và thư viện của nó không thực sự thân thiện với người dùng (đặc biệt đối với những người không làm việc nhiều với việc kiểm tra email). Gmail API REST Đây là lúc xuất hiện - một thư viện cho phép bạn đọc email và thậm chí mở chúng trong trình duyệt nếu bạn sử dụng các công cụ tự động hóa trình duyệt như . gmail-getter npm Playwright Đọc email Gmail bằng Gmail-Getter Điều đầu tiên trước tiên - bạn cần cài đặt gói trong dự án của mình: npm install gmail-getter Tạo dự án Google Cloud Console và lấy thông tin xác thực Để đăng nhập vào bạn cần có thông tin xác thực: , và . Những thông tin xác thực này cho phép bạn nhận được mã thông báo Truy cập, được yêu cầu trong các yêu cầu tiếp theo (chẳng hạn như nhận danh sách email hoặc một email, v.v.). API Gmail, ID khách hàng Bí mật khách hàng Mã thông báo làm mới Các bước để đi: Tạo một dự án trong . Google Cloud Console Tạo trong phần ( ) và tải xuống. thông tin xác thực OAuth API & Dịch vụ tốt nhất là chọn Ứng dụng ở đó nếu bạn cần để kiểm tra tự động dành cho máy tính để bàn Kích hoạt . API Gmail Nhận mã thông báo Làm mới. Để nhận mã thông báo Làm mới - chỉ cần thực hiện lệnh trong thư mục gốc của dự án: npx gmail-getter get-refresh-token (hoặc bất cứ nơi nào khác nếu bạn đã cài đặt gói trên toàn cầu) get-refresh-token Bạn phải đặt tệp ở nơi bạn sẽ thực thi lệnh. credentials.json ⚠️ tên tệp thông tin xác thực có phân biệt chữ hoa chữ thường ⚠️ Nhận mã thông báo truy cập Sau khi cấu hình xong, bạn phải nhận được mã thông báo Access trong các thử nghiệm tự động của mình. Tôi muốn nói rằng nơi tốt nhất cho nó là thiết lập toàn cục (một chức năng thực thi trước khi quá trình chạy thử bắt đầu). Vì vậy, nó sẽ giống như thế này: import {getToken} from 'gmail-getter' export default async function globalSetup() { process.env['ACCESS_TOKEN'] = await getToken( process.env.CLIENT_ID!, process.env.CLIENT_SECRET!, process.env.REFRESH_TOKEN! ) } Ví dụ trên sử dụng các biến môi trường, vì vậy bạn chắc chắn cũng sẽ cần phải cài đặt gói . dotenv Tuy nhiên, nếu bạn muốn mọi thứ đơn giản - bạn có thể sử dụng đoạn mã này ở bất cứ nơi nào bạn cần mã thông báo để có thể truy cập được từ đó: const accessToken = await getToken( '<put-your-client-id-here>', '<put-your-client-secret-here>', '<put-your-refresh-token-here>' ) Nhận email Hiện tại, sử dụng để tìm email bạn cần: API REST của Gmail ngôn ngữ truy vấn riêng const email = await checkInbox(accessToken!, 15000, 1500, 'from:squier7 subject:Test!') Lệnh trên trả về cho bạn một đối tượng email nhưng bạn vẫn cần lấy nội dung hoặc liên kết của nó. Thay thế vào truy vấn của riêng bạn theo cú pháp từ liên kết ở trên ☝️ from:squier7 subject:Test! Bạn có thể phân tích một liên kết bằng : biểu thức chính quy const link = parseLinkFromHtml(email!, /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im) Thay thế bằng biểu thức chính quy của riêng bạn ☝️ /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im HOẶC lấy toàn bộ nội dung HTML của email và hiển thị nó trong trình duyệt của bạn: import {getToken, parseHtml} from 'gmail-getter' import {test} from '@playwright/test' test('Render an email', async ({page}) => { const accessToken = await getToken( '<put-your-client-id-here>', '<put-your-client-secret-here>', '<put-your-refresh-token-here>' ) const email = await checkInbox(accessToken!, 15000, 1500, 'from:squier7 subject:Test!') // get an email const html = parseHtml(email!) // parse HTML from the email await page.setContent(html) // render the email in the browser }) Tổng thể Tôi nghĩ khá rõ ràng rằng làm việc với email trong các bài kiểm tra tự động có thể khó khăn! Nhưng biết những thủ thuật này sẽ khiến mọi việc trở nên dễ dàng hơn nhiều. Bạn vẫn có thể sử dụng một số dịch vụ email khác hoặc thử , nhưng tôi đảm bảo với bạn - việc này sẽ không dễ dàng như trong hướng dẫn này vì bạn cần tạo một công cụ trợ giúp của riêng mình, chẳng hạn như được cung cấp đây. IMAP gmail-getter Bạn có thể tìm thấy trên . cũng vậy. ví dụ về Nhà viết kịch GitHub Ví dụ về cây bách