सभी को नमस्कार! स्वचालित परीक्षणों में ईमेल पढ़ना एक ऐसी तरकीब है जिसके बारे में आपको यह जानने की आवश्यकता हो सकती है कि कई परियोजनाओं में इसे कैसे किया जाए। यहां बताया गया है कि इससे क्यों और कैसे निपटा जाए... यह महत्वपूर्ण क्यों है? ठीक है, यदि सिस्टम ईमेल भेजता है - तो आप यह सत्यापित करना चाहेंगे कि वे भेजे जा रहे हैं और क्लिक करने योग्य लिंक सहित सामग्री सही है। तो ये सामान्य परिदृश्य हैं जब आपको इसकी आवश्यकता होती है: साइन अप करें। आपके द्वारा खाता बनाते ही कई प्लेटफ़ॉर्म एक पुष्टिकरण ईमेल भेजते हैं, और आपको ईमेल से एक पुष्टिकरण लिंक पर क्लिक करना होता है। चालान. यदि आपका ऐप कोई भुगतान करता है - तो वे आम तौर पर ईमेल के माध्यम से चेक या चालान भेजते हैं, इसलिए आप यह भी देखना चाहेंगे कि क्या उनकी सामग्री सही है। परिणाम। मेडिकल परीक्षण के परिणाम की तरह. मेरे अनुभव में - कुछ अस्पताल परीक्षण पूरा होने के बाद परिणामों के साथ एक ईमेल भेजते हैं (या कम से कम एक व्यक्तिगत पृष्ठ का लिंक जहां आप रिपोर्ट देख सकते हैं)। … बेशक, यह पूरी सूची नहीं है - ये केवल वे उपयोग के मामले हैं जिनसे मैं अपने करियर में सबसे अधिक मिला हूं। इन परिदृश्यों को सत्यापित करने में विफल रहने से उपयोगकर्ताओं को ईमेल नहीं मिल सकते हैं या ईमेल में गलत जानकारी मिल सकती है। परियोजनाओं में से एक में, इससे हमें एक समाप्त हो चुके टोकन को जल्दी ढूंढने में मदद मिली। सेंडग्रिंड टेस्ट में ईमेल पढ़ने की जटिलताएँ क्या हैं? ईमेल पढ़ना एक मुश्किल काम है, लेकिन असंभव नहीं। शुरुआती ईमेल क्लाइंट सर्वर से ईमेल लाने के लिए उपयोग कर रहे थे, लेकिन इसमें एक छोटी सी समस्या है - डाउनलोड होने के बाद यह ईमेल को सर्वर से हटा देता है। POP3 का बाद में, प्रोटोकॉल आया - यह आपको केवल सर्वर से ईमेल पढ़ने की अनुमति देता है। IMAP समस्या यह है - या जब आप पहली बार कनेक्ट होते हैं (जैसे जब आप स्वचालित परीक्षण पुनः आरंभ करते हैं)। कुछ सेवाएँ इन प्रोटोकॉल पर प्रतिबंध लगाती हैं आप अपनी पहचान की पुष्टि करें दूसरी ओर, जैसी कुछ सेवाएँ आपके ईमेल में हेरफेर करने के लिए एक प्रदान करती हैं, लेकिन एक और समस्या है - दस्तावेज़ीकरण और इसकी लाइब्रेरी वास्तव में उपयोगकर्ता के अनुकूल नहीं हैं (विशेषकर उन लोगों के लिए जो ईमेल परीक्षण के साथ ज्यादा काम नहीं करते हैं)। जीमेल REST API यहीं पर आता है - एक लाइब्रेरी जो आपको ईमेल पढ़ने और यहां तक कि उन्हें अपने ब्राउज़र में खोलने की अनुमति देती है यदि आप जैसे ब्राउज़र ऑटोमेशन टूल का उपयोग करते हैं। जीमेल-गेटर एनपीएम प्लेराइट जीमेल-गेटर के साथ जीमेल ईमेल पढ़ना सबसे पहली बात - आपको अपने प्रोजेक्ट में पैकेज इंस्टॉल करना होगा: npm install gmail-getter एक Google क्लाउड कंसोल प्रोजेक्ट बनाएं और क्रेडेंशियल प्राप्त करें आपको क्रेडेंशियल प्राप्त करने की आवश्यकता है: एक , एक , और एक । ये क्रेडेंशियल आपको एक एक्सेस टोकन प्राप्त करने देते हैं, जो आगे के अनुरोधों (जैसे ईमेल की सूची या एकल ईमेल आदि प्राप्त करना) में आवश्यक है। जीमेल एपीआई में लॉग इन करने के लिए, क्लाइंट आईडी क्लाइंट सीक्रेट रीफ्रेश टोकन जाने के लिए कदम: में एक प्रोजेक्ट बनाएं। Google क्लाउड कंसोल अनुभाग में बनाएं ( ) और इसे डाउनलोड करें। एपीआई और सेवा OAuth क्रेडेंशियल अधिमानतः, यदि आपको स्वचालित परीक्षणों के लिए इसकी आवश्यकता है तो वहां ऐप चुनें डेस्कटॉप सक्षम करें। जीमेल एपीआई एक ताज़ा टोकन प्राप्त करें. रिफ्रेश टोकन प्राप्त करने के लिए - बस प्रोजेक्ट रूट में एक कमांड निष्पादित करें: npx gmail-getter get-refresh-token (या कहीं और यदि आपने पैकेज विश्व स्तर पर स्थापित किया है) get-refresh-token आपको फ़ाइल को उस स्थान पर रखना होगा जहां आप कमांड निष्पादित करेंगे। credentials.json ⚠️ क्रेडेंशियल फ़ाइल नाम केस-संवेदी है ⚠️ एक्सेस टोकन प्राप्त करें एक बार कॉन्फ़िगरेशन हो जाने के बाद, आपको अपने स्वचालित परीक्षणों में एक एक्सेस टोकन प्राप्त करना होगा। मैं कहूंगा कि इसके लिए सबसे अच्छी जगह एक वैश्विक सेटअप है (एक फ़ंक्शन जो परीक्षण शुरू होने से पहले निष्पादित होता है)। तो, यह कुछ इस तरह होगा: 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! ) } उपरोक्त उदाहरण पर्यावरण चर का उपयोग करता है, जिसके लिए आपको निश्चित रूप से पैकेज भी स्थापित करने की आवश्यकता होगी। dotenv लेकिन, यदि आप चीजों को सरल रखना चाहते हैं - तो आप इस स्निपेट का उपयोग कर सकते हैं जहां आपको टोकन तक पहुंचने की आवश्यकता है: const accessToken = await getToken( '<put-your-client-id-here>', '<put-your-client-secret-here>', '<put-your-refresh-token-here>' ) ईमेल प्राप्त करें अभी, आपके लिए आवश्यक ईमेल ढूंढने के लिए उपयोग करता है: जीमेल का REST API अपनी स्वयं की क्वेरी भाषा का const email = await checkInbox(accessToken!, 15000, 1500, 'from:squier7 subject:Test!') उपरोक्त आदेश आपको एक ईमेल ऑब्जेक्ट लौटाता है, लेकिन आपको अभी भी इसकी सामग्री या एक लिंक प्राप्त करने की आवश्यकता है। उपरोक्त लिंक से सिंटैक्स का अनुसरण करते हुए अपनी स्वयं की क्वेरी के लिए ☝️ from:squier7 subject:Test! आप उपयोग करके किसी लिंक को पार्स कर सकते हैं: रेगेक्स का const link = parseLinkFromHtml(email!, /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im) अपने रेगुलर एक्सप्रेशन से बदलें ☝️ /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im या ईमेल की संपूर्ण HTML सामग्री प्राप्त करें, और इसे अपने ब्राउज़र में प्रस्तुत करें: 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 }) कुल मिलाकर मुझे लगता है कि अब यह बिल्कुल स्पष्ट है कि स्वचालित परीक्षणों में ईमेल के साथ काम करना मुश्किल हो सकता है! लेकिन इन ट्रिक्स को जानने से चीजें बहुत आसान हो जाती हैं। आप अभी भी कुछ अन्य ईमेल सेवाओं के माध्यम से जा सकते हैं या आज़मा सकते हैं, लेकिन मैं आपको गारंटी देता हूं - यह उतना आसान नहीं होगा जितना इस गाइड में है, क्योंकि आपको अपना स्वयं का एक सहायक बनाने की आवश्यकता होगी, जैसे कि प्रदान किया गया है यहाँ। IMAP gmail-getter आप पर पा सकते हैं। भी. GitHub नाटककार का उदाहरण सरू का उदाहरण