- वेब ऑटोमेशन/टेस्टिंग के लिए Selenium व्यावहारिक रूप से मानक था
- शुरू करना आसान है, और लगभग सभी प्रोग्रामिंग भाषाओं को सपोर्ट करता है
- यह काफी है, लेकिन बस उतना ही
- आधुनिक JavaScript framework वाली साइटों पर यह अच्छी तरह काम नहीं करता (Angular, React, ..)
→ इसका मतलब यह नहीं कि यह बिल्कुल काम नहीं करता। मतलब यह है कि यह उतना अच्छी तरह काम नहीं करता
- कहा जाता है कि इसकी documentation अच्छी है, लेकिन वास्तव में अगर आप मुख्य रास्ते से थोड़ा भी अलग कुछ करना चाहें तो उदाहरण ढूँढना मुश्किल होता है
- Chai, Mocha, Cypress जैसी चीज़ें इस्तेमाल करने की कोशिश की, लेकिन उनकी configuration पूरी तरह अलग है और Python developers के लिए आसान नहीं है
- Selenium के दर्जनों विकल्प बने, लेकिन उनमें से ज़्यादातर कुछ ही वर्षों में गायब हो गए
Enter Playwright
- यह शानदार है, और उससे भी महत्वपूर्ण बात यह है कि इसे Microsoft बना रहा है। इसलिए लंबे समय तक support मिलने की संभावना है
- Playwright की killer feature है "test auto-generation"
- ब्राउज़र खोलकर चरण-दर-चरण काम करें, तो यह उसे रिकॉर्ड करके Python script में बदल देता है
- इससे Selenium में XPath जैसी चीज़ें खोजने की मेहनत कम हो जाती है
- इस तरह सहेजे गए चरण लगभग बिना किसी बदलाव के तुरंत चलाए जा सकते हैं
- एक और फायदा यह है कि execution process को वीडियो के रूप में सेव करके देखा जा सकता है
- इसकी एकमात्र कमी यह है कि यह अभी नया है। bugs भी काफ़ी हैं और documentation अच्छी नहीं है
- लेकिन कुल मिलाकर देखें, तो हर नए project के लिए मैं Playwright ही चुनूँगा
4 टिप्पणियां
मैं puppeteer इस्तेमाल करता था, लेकिन पूरी तरह Playwright पर onboarding सफलतापूर्वक करने के बाद मुझे लगता है कि सिर्फ Playwright की codegen सुविधा के लिए भी उस पर जाना पूरी तरह सार्थक है।
जो लोग लंबे समय से सिर्फ Puppeteer इस्तेमाल कर रहे हैं और सिर्फ node ही इस्तेमाल करते हैं, उनके लिए Playwright पर जाना सहज रूप से आसान नहीं लगता।
मौजूदा प्रोजेक्ट को माइग्रेट करने के बारे में सोचने से पहले, नया प्रोजेक्ट शुरू करते समय Playwright को नए सिरे से अपनाने पर सक्रिय रूप से विचार करें। या फिर किसी toy project से शुरुआत करना भी अच्छा हो सकता है।
मुझे लगता है कि Playwright में अलग-अलग भाषाओं (JS, Python) के बीच API ज़्यादा consistent और थोड़ा अधिक साफ़-सुथरा है.
खासकर Python के मामले में async support बहुत अच्छा है haha