با یک تیر دو نشان بزنید🎯 یک هدیه ۳ میلیون تومانی به همراه ۲۵٪ تخفیف روی همه دوره‌های متخصص😍
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ دیدگاه نظر محسن موحد
ابزار تست Selenium چیست؟ (نحوه استفاده از Selenium و کاربرد آن)
ابزار تست Selenium چیست؟ (نحوه استفاده از Selenium و کاربرد آن)

فکر کن تو یه برنامه‌نویس هستی و داری روی یه پروژه بزرگ کار می‌کنی. هر بار که یه تغییری تو کدت می‌دی، باید ساعت‌ها بشینی و دستی همه بخش‌های سایت یا نرم‌افزار رو چک کنی که ببینی درست کار می‌کنن یا نه. واقعاً عذاب‌آوره که هی باید برگردی و همه چیزو چک کنی. حالا اگه این ابزارهای اتوماسیون تست نبودن، چی می‌شد؟ شاید هیچ پیشرفتی نمی‌کردیم و بیشتر وقتمون می‌رفت تو دیباگ کردن مشکلات ساده و ابتدایی.

اما تو دهه ۲۰۰۰، یه قهرمان به نام Selenium به دادمون رسید. این ابزار فوق‌العاده به برنامه‌نویسا کمک کرد که وب‌سایت‌ها و نرم‌افزارهاشون رو به‌صورت خودکار تست کنن. یعنی دیگه نیاز نبود ساعت‌ها وقت بذارن برای چک کردن دستی همه چیز. Selenium این کارو برامون انجام می‌داد و وقت و انرژی بیشتری برای خلاقیت و نوآوری باقی می‌ذاشت. با Selenium، برنامه‌نویسا می‌تونستن به جای خسته شدن از تست دستی، روی بهبود کدها و اضافه کردن ویژگی‌های جدید تمرکز کنن.

سلنیوم (Selenium) چیست؟

سلنیوم (Selenium) یه ابزار متن‌باز برای اتوماسیون مرورگرهاست که برای شبیه‌سازی تعاملات انسانی طراحی شده. این ابزار می‌تونه کارهایی که یه انسان پشت کامپیوتر انجام می‌ده، مثل کلیک کردن روی دکمه‌ها و تایپ کردن متن‌ها رو تقلید کنه. عمدتاً از Selenium برای اتوماسیون مرورگرها در تست نرم‌افزار استفاده می‌شه. Selenium شامل سه محصول اصلیه به‌ نام‌های Selenium WebDriver، Selenium IDE و Selenium Grid و یک محصول هم با نام Selenium RC که منسوخ شده. هر کدوم از این ابزارها ویژگی‌ها و کاربردهای خاص خودشونو دارن که در ادامه به بررسی اون‌ها می‌پردازیم.

Selenium IDE

اولین ابزار از این مجموعه، Selenium IDE هست. Selenium IDE یه افزونه برای مرورگرهای Firefox و Chrome هست که به کاربران این امکان رو می‌ده تا تست‌های خودکار رو ضبط و پخش کنن. این ابزار برای کسایی که تازه با تست خودکار آشنا می‌شن، خیلی مناسبه چون استفاده از اون خیلی ساده و کاربردیه.

تصور کن که یه افزونه تو مرورگرت نصب می‌کنی و بعد می‌تونی با کلیک کردن و انجام دادن کارهایی که تو سایتت انجام می‌دی، یه تست خودکار بسازی. این تست تمام کارهایی که تو انجام دادی رو ضبط می‌کنه و بعداً می‌تونه همون کارها رو خودش انجام بده تا مطمئن بشه که همه چیز درست کار می‌کنه. پس از ضبط، می‌تونی تست‌ها رو پخش کنی و ببینی که آیا سایتت درست کار می‌کنه یا نه. خیلی راحت و جذابه، نه؟

Selenium RC (Remote Control)

حالا بریم سراغ Selenium RC. این ابزار بهت اجازه می‌ده تست‌های خودکار رو در برابر مرورگرهای مختلف و روی سیستم‌های عامل مختلف اجرا کنی. این یعنی تو می‌تونی با استفاده از زبان‌های برنامه‌نویسی مختلف مثل Java، C#, PHP، Python و Perl تست‌های خودت رو بنویسی و اجرا کنی.

فرض کن که تو می‌خوای تست‌هایی رو بنویسی که توی مرورگرهای مختلف مثل Chrome، Firefox، Safari و Edge اجرا بشن. Selenium RC این امکان رو بهت می‌ده. ولی باید بدونی که این ابزار دیگه منسوخ شده و جای خودش رو به WebDriver داده که خیلی پیشرفته‌تر و کارآمدتره. البته اگه همچنان با Selenium RC کار کنی، می‌تونی ازش استفاده کنی، ولی بهتره که به ابزارهای جدیدتر مهاجرت کنی.

WebDriver

و اما WebDriver، نسل بعدی Selenium RC هست و امروزه به‌عنوان هسته اصلی Selenium شناخته می‌شه. WebDriver بهت اجازه می‌ده تا مستقیماً با مرورگرها ارتباط برقرار کنی و تست‌های خودکار رو اجرا کنی. این ابزار از مرورگرهای مختلف مثل Chrome، Firefox، Safari و Edge پشتیبانی می‌کنه و به‌طور کلی سریع‌تر و پایدارتر از Selenium RC هست.

تصور کن که می‌خوای تست‌هایی بنویسی که مستقیماً با مرورگرها تعامل داشته باشن. WebDriver این امکان رو بهت می‌ده. مثلاً می‌تونی تستی بنویسی که توی مرورگر Chrome باز بشه، یه فرم رو پر کنه، دکمه ارسال رو بزنه و بعد نتیجه رو بررسی کنه. همه این کارها رو WebDriver خیلی سریع و با دقت انجام می‌ده. به خاطر همین سرعت و پایداری بالا، WebDriver خیلی محبوب شده و به عنوان استانداردی در تست خودکار وب شناخته می‌شه.

Selenium Grid

حالا نوبت می‌رسه به Selenium Grid. Selenium Grid ابزاریه که بهت امکان می‌ده تست‌های خودکار رو به‌صورت موازی روی چندین ماشین و مرورگر مختلف اجرا کنی. این ویژگی خیلی کاربردیه، مخصوصاً وقتی که نیاز داری تست‌های خودت رو در مقیاس بزرگ و روی سیستم‌های مختلف اجرا کنی.

فرض کن که یه پروژه بزرگ داری و می‌خوای تست‌هات رو همزمان روی مرورگرهای مختلف و سیستم‌عامل‌های مختلف اجرا کنی. Selenium Grid این امکان رو بهت می‌ده. می‌تونی تست‌هات رو روی چندین مرورگر و سیستم‌عامل به‌صورت همزمان اجرا کنی و نتایج رو دریافت کنی. این ویژگی به خصوص برای شرکت‌هایی که نیاز به تست در مقیاس بزرگ دارن، خیلی مفیده. مثلاً یه شرکت بزرگ مثل نتفلیکس می‌تونه با استفاده از Selenium Grid، تست‌های خودکارش رو روی هزاران مرورگر و سیستم‌عامل مختلف اجرا کنه و مطمئن بشه که همه چیز درست کار می‌کنه.

دنیایی بدون Selenium و ابزارهای تست

حالا بیا تصور کنیم اگه Selenium و ابزارهای مشابه نبودن، چی می‌شد؟ برنامه‌نویسا و تست‌نویس‌ها باید همه تست‌ها رو دستی انجام می‌دادن. هر بار که تغییری تو کدها می‌دادن، باید ساعت‌ها وقت می‌ذاشتن تا همه چیزو چک کنن. این یعنی تاخیرهای بزرگ تو توسعه و به‌روزرسانی نرم‌افزارها. دنیای تکنولوژی به این سرعت و پیشرفت نمی‌رسید و احتمالاً هنوز درگیر حل مشکلات ساده بودیم.

بدون Selenium، ما باید هر تغییر کوچیکی رو با دست تست می‌کردیم که ممکن بود روزها یا حتی هفته‌ها زمان ببره. علاوه بر این، خطاهای انسانی هم خیلی بیشتر می‌شدن. هرچند که ما آدما تو فکر کردن و خلاقیت بهترینیم، ولی وقتی به دقت و تکرار نیاز داریم، ماشین‌ها خیلی بهتر از ما عمل می‌کنن. پس بدون ابزارهای اتوماسیون تست، ما هیچ‌وقت به این سطح از سرعت و دقت تو توسعه نرم‌افزارها نمی‌رسیدیم.

چرا باید Selenium رو بشناسیم؟

حالا ممکنه بپرسی چرا باید اصلاً درباره Selenium بدونی؟ خیلی ساده‌ست! اگه یه روزی خواستی وارد دنیای برنامه‌نویسی و توسعه وب بشی، یا حتی اگه فقط بخوای یه وب‌سایت کوچیک راه بندازی، باید بدونی چطور مطمئن بشی که سایتت به درستی کار می‌کنه. Selenium می‌تونه کمک کنه تا خیلی راحت و بدون دردسر، تست‌های خودکار برای وب‌سایتت بنویسی و از درست بودن عملکردش مطمئن بشی.

تصور کن یه پروژه‌ای رو شروع کردی و برای تست اون نیاز داری که هر بار که تغییری می‌دی، همه چیزو دستی چک کنی. این کار نه تنها زمان زیادی می‌گیره، بلکه خیلی خسته‌کننده هم هست. اما با Selenium، می‌تونی به‌راحتی تست‌هایی بنویسی که به‌صورت خودکار اجرا بشن و بهت بگن که آیا کدهای جدیدت درست کار می‌کنن یا نه. این کار بهت اجازه می‌ده وقت بیشتری برای خلاقیت و نوآوری داشته باشی و نگرانی کمتری از بابت خطاهای غیرمنتظره.

تاریخچه Selenium

Selenium توسط Jason Huggins در سال ۲۰۰۴ ساخته شد. اون موقع Jason به‌عنوان مهندس نرم‌افزار تو شرکت ThoughtWorks کار می‌کرد و برای تست خودکار برنامه‌های وب، به یه ابزار نیاز داشت. از همین‌جا بود که Selenium به دنیا اومد. Selenium در ابتدا به‌عنوان یه ابزار داخلی استفاده می‌شد، اما به مرور زمان به یه پروژه متن‌باز تبدیل شد و حالا یکی از پرکاربردترین ابزارهای تست خودکار وب تو دنیاست.

شاید برات جالب باشه بدونی چرا اسم این ابزار Selenium گذاشته شد. داستان از این قراره که یه زمانی ابزار معروفی به نام Mercury QuickTest Professional وجود داشت. Jason به شوخی گفت که Selenium (که یه ماده شیمیاییه) پادزهری برای Mercury است. همین شد که نام Selenium برای این ابزار انتخاب شد.

مزایای تست خودکار با Selenium

وقتی صحبت از تست خودکار وب‌سایت‌ها و نرم‌افزارها می‌شه، Selenium یکی از بهترین انتخاب‌هاست. اما چرا؟ بیایید نگاهی بندازیم به مزایای استفاده از Selenium در تست خودکار.

عدم نیاز به یادگیری زبان جدید

یکی از بزرگترین مزایای Selenium اینه که از چندین زبان برنامه‌نویسی معروف پشتیبانی می‌کنه. یعنی اگه تو به JavaScript، Python، Java، PHP، Ruby یا C# مسلط باشی، می‌تونی به راحتی با Selenium کار کنی بدون اینکه نیاز باشه یه زبان جدید یاد بگیری. البته Selenium خودش یه سینتکس خاص داره، اما اگه به یکی از این زبان‌ها مسلط باشی، خیلی راحت‌تر می‌تونی باهاش کار کنی.

سازگاری با مرورگرهای مختلف

یکی از مشکلات بزرگ تست وب‌سایت‌ها، سازگاری با مرورگرهای مختلفه. اما Selenium این مشکل رو حل کرده. Selenium از طریق درایورها با مرورگرها ارتباط برقرار می‌کنه و می‌تونه با نسخه‌های مختلف مرورگرها سازگار بشه. مثلاً می‌تونی با درایور مناسب، تست‌هات رو روی مرورگرهای معروفی مثل Chrome، Firefox، Safari، Edge و Opera اجرا کنی.

سازگاری با پلتفرم‌های مختلف

یکی دیگه از مزایای Selenium اینه که روی پلتفرم‌های مختلف کار می‌کنه. یعنی می‌تونی تست‌هات رو روی یه پلتفرم بنویسی و روی یه پلتفرم دیگه اجرا کنی. این ویژگی خیلی کار رو راحت می‌کنه، چون بدون هیچ دردسری می‌تونی تست‌هات رو روی ویندوز، مک، یا انواع توزیع‌های لینوکس اجرا کنی.

پشتیبانی جامعه کاربری

Selenium یه ابزار اپن‌سورسه و تاریخچه طولانی داره. به همین خاطر، یه جامعه کاربری قوی داره که همیشه آماده کمک هستن. این پشتیبانی شامل به‌روزرسانی‌ها، مستندات جامع و منابع آموزشی فراوان می‌شه. هر سوالی داشته باشی، احتمالاً کسی قبلاً اون رو پرسیده و جوابش رو توی اینترنت پیدا می‌کنی.

یکپارچه‌سازی با ابزارهای ثالث

Selenium تو زمینه یکپارچه‌سازی با ابزارهای دیگه هم خیلی خوب عمل می‌کنه. این ابزار بهت امکان می‌ده که از پلاگین‌های موجود استفاده کنی یا حتی پلاگین‌های سفارشی خودت رو بسازی تا قابلیت‌های Selenium رو افزایش بدی. این ویژگی باعث می‌شه که بتونی ابزار تست خودکارت رو دقیقاً به شکلی که نیاز داری، تنظیم کنی.

اجرای تست‌های موازی

یکی از ویژگی‌های جذاب Selenium اینه که می‌تونی تست‌هات رو به صورت موازی روی چندین ماشین اجرا کنی. این قابلیت از طریق ابزار Selenium Grid فراهم شده. با این ویژگی، می‌تونی تست‌هات رو به‌صورت همزمان روی مرورگرها و پلتفرم‌های مختلف اجرا کنی و از یه مرکز مدیریت واحد برای تنظیمات مرورگرها استفاده کنی. این کار سرعت تست‌هات رو خیلی افزایش می‌ده و بهت کمک می‌کنه که نتایج دقیق‌تری بگیری.

با این ابزار قدرتمند دیگه هیچ تستی برات سخت نخواهد بود!

در نهایت، Selenium یه ابزار قدرتمند و انعطاف‌پذیر برای تست خودکار وب‌سایت‌ها و نرم‌افزارهاست. از پشتیبانی از زبان‌های مختلف برنامه‌نویسی گرفته تا سازگاری با مرورگرها و پلتفرم‌های مختلف، همه چیز رو پوشش می‌ده. پشتیبانی قوی جامعه کاربری و قابلیت یکپارچه‌سازی با ابزارهای دیگه، این ابزار رو به یکی از بهترین انتخاب‌ها برای تست خودکار تبدیل کرده. پس اگه می‌خوای وارد دنیای تست خودکار بشی، Selenium یکی از بهترین انتخاب‌هاست.

محدودیت‌های تست با Selenium

استفاده از Selenium برای تست خودکار وب‌سایت‌ها و نرم‌افزارها خیلی جذابه، اما این ابزار هم محدودیت‌هایی داره که باید باهاشون آشنا باشی. در ادامه به بررسی این محدودیت‌ها می‌پردازیم و باهم ترکیبشون می‌کنیم تا تصویر کامل‌تری از ماجرا به دست بیاریم.

کمبود پشتیبانی فنی قابل اعتماد

یکی از مشکلات اصلی Selenium اینه که چون یه ابزار متن‌باز (open-source) هست، جامعه توسعه‌دهنده گسترده و پشتیبانی فنی قوی و متمرکزی نداره. یعنی اگه به مشکلی بربخوری، نمی‌تونی به یه تیم پشتیبانی رسمی و حرفه‌ای تکیه کنی. البته جامعه کاربری قوی داره و خیلی از سوال‌ها و مشکلاتت توی فروم‌ها و منابع آنلاین پاسخ داده می‌شه، ولی این پشتیبانی همیشه به اندازه پشتیبانی رسمی قابل اعتماد نیست.

عدم پشتیبانی از تست اپلیکیشن‌های موبایل و دسکتاپ

Selenium به طور خاص برای تست وب‌سایت‌ها طراحی شده و نمی‌تونه اپلیکیشن‌های موبایل یا دسکتاپ رو تست کنه. این یه محدودیت بزرگه، چون اگه بخوای یه اپلیکیشن موبایل یا دسکتاپ رو تست کنی، باید از ابزارهای دیگه‌ای مثل Appium برای موبایل یا ابزارهای خاص تست دسکتاپ استفاده کنی.

پشتیبانی محدود از تست تصاویر

Selenium در تست تصاویر و عناصر گرافیکی محدودیت داره. یعنی اگه بخوای صحت نمایش تصاویر یا عناصر گرافیکی رو بررسی کنی، Selenium ابزارهای کافی برای این کار نداره. برای این نوع تست‌ها باید از ابزارهای دیگه‌ای مثل SikuliX که مخصوص تست تصاویر هستن استفاده کنی.

پشتیبانی محدود از مدیریت تست

Selenium به تنهایی امکانات مدیریت تست کاملی رو فراهم نمی‌کنه. برای مدیریت تست‌ها، گزارش‌گیری و سازماندهی تست‌ها، باید از ابزارهای مکمل استفاده کنی. مثلاً برای زبان جاوا می‌تونی از JUnit و TestNG استفاده کنی که بهت کمک می‌کنن تست‌هات رو بهتر مدیریت کنی و گزارش‌های دقیق‌تری از نتایج تست‌ها به دست بیاری. این ابزارها امکان دسته‌بندی و اجرای تست‌ها رو فراهم می‌کنن و بهت اجازه می‌دن تا به راحتی مشکلات رو پیگیری و رفع کنی.

در زبان‌های دیگه هم ابزارهای مشابهی وجود داره. برای مثال، در زبان PHP می‌تونی از PHPUnit استفاده کنی که یه فریم‌ورک تست قوی برای PHP هست و امکانات مدیریت تست‌های مختلف رو بهت می‌ده. با استفاده از PHPUnit می‌تونی تست‌های واحد (unit tests) بنویسی، اجرای تست‌ها رو زمان‌بندی کنی و گزارش‌های جامع و دقیقی از نتایج تست‌ها بگیری.

این ابزارهای مکمل بهت کمک می‌کنن که فرآیند تست‌هات رو بهتر سازماندهی کنی و از کارایی بیشتری برخوردار بشی. پس اگه از Selenium برای تست خودکار استفاده می‌کنی، حتماً به فکر استفاده از این ابزارهای مکمل هم باش تا تجربه بهتری از مدیریت و اجرای تست‌ها داشته باشی.

نیاز به دانش برنامه‌نویسی

برای استفاده موثر از Selenium، باید دانش برنامه‌نویسی داشته باشی. چون بسیاری از تست‌ها نیاز به نوشتن کد دارن. اگه به یکی از زبان‌های برنامه‌نویسی مثل Java، Python، PHP، JavaScript یا C# مسلط باشی، می‌تونی به راحتی از Selenium استفاده کنی. اما اگه هیچ تجربه‌ای در برنامه‌نویسی نداری، ممکنه استفاده از این ابزار برایت چالش‌برانگیز باشه و نیاز به یادگیری زبان‌های برنامه‌نویسی داشته باشی.

محدودیت‌های WebDriver

حتی با اینکه Selenium WebDriver یکی از بهترین ابزارها برای اتوماسیون تست‌ها روی دستگاه‌های مختلفه، اما خودش هم محدودیت‌هایی داره. بیایید به بعضی از این محدودیت‌ها نگاهی بندازیم:

  • عدم تعامل با فلش یا اپلت‌های جاوا: WebDriver نمی‌تونه با فلش یا اپلت‌های جاوا تعامل داشته باشه.
  • ناتوانی در مدیریت انیمیشن‌های پیچیده: WebDriver نمی‌تونه با انیمیشن‌های پیچیده به خوبی کار کنه.
  • عدم تشخیص متن داخل تصاویر: WebDriver نمی‌تونه متن داخل تصاویر رو تشخیص بده.
  • مشکل در صفحات داینامیک: WebDriver در مواجهه با صفحات داینامیکی که به طور مداوم تغییر می‌کنن، ممکنه دچار مشکل بشه.
  • سختی در تست اپلیکیشن‌های وب با استفاده از Ajax یا ReactJS: ابزار WebDriver می‌تونه در تست اپلیکیشن‌های وبی که از تکنولوژی‌هایی مثل Ajax یا ReactJS استفاده می‌کنن، چالش‌برانگیز باشه.

اجرای آهسته تست‌ها

یکی دیگه از محدودیت‌های Selenium اینه که اجرای تست‌ها ممکنه کند باشه. چون اتوماسیون به درایورهای مختلف مرورگرها وابسته‌ست، این موضوع می‌تونه باعث بشه که فرآیند تست‌ها کند بشه. مخصوصاً وقتی داری تست‌های بزرگ روی وب‌سایت‌های بزرگ اجرا می‌کنی، ممکنه Selenium به کندی پاسخ بده.

سختی در مدیریت عناصر داینامیک وب

Selenium در تعامل با عناصر داینامیک وب ممکنه دچار مشکل بشه. مثلاً اگه شناسه (ID) یه عنصر توی صفحه وب تغییر کنه، ممکنه اسکریپت تست دچار مشکل بشه و تست‌ها شکست بخورن. این موضوع می‌تونه اجرای تست‌ها رو پیچیده‌تر کنه و نیاز به به‌روزرسانی مداوم تست‌ها داشته باشی.

پشتیبانی محدود برای اپلیکیشن‌های ویندوزی

Selenium برای تست اپلیکیشن‌های ویندوزی هم محدودیت داره. برای انجام تست اتوماسیون روی اپلیکیشن‌های دسکتاپ، معمولاً باید از ابزارها یا کتابخانه‌های ثالث استفاده کنی که این موضوع می‌تونه پیچیدگی‌های خاص خودش رو داشته باشه.

چگونه از Selenium استفاده کنیم؟

اگه می‌خوای وارد دنیای تست خودکار بشی و از Selenium استفاده کنی، باید بدونی که چطور شروع کنی. خب، اینجا می‌خوام بهت بگم چطور قدم به قدم پیش بری تا بتونی از این ابزار فوق‌العاده استفاده کنی. از نصب ابزارهای لازم گرفته تا نوشتن اولین تست، همه چیز رو برات توضیح می‌دم.

انتخاب زبان برنامه‌نویسی

اولین قدم اینه که یکی از زبان‌های برنامه‌نویسی پشتیبانی‌شده توسط Selenium رو انتخاب کنی. این زبان‌ها شامل Python، Java، C#، Ruby، PHP، JavaScript (Node.js)، و Go هستن. برای مثال، ما اینجا از Python استفاده می‌کنیم، اما در ادامه مثال‌هایی هم با زبان‌های دیگه برات می‌زنم.

نصب Selenium

برای نصب Selenium، باید ابزارهای لازم رو به ترتیب نصب کنی. بسته به زبانی که انتخاب کردی، روش نصب کمی متفاوت خواهد بود. در اینجا نصب برای Python، PHP، Java، C#، Ruby، Node.js و Go رو توضیح می‌دم.

نصب در Python

  • نصب Python: اول باید Python رو روی سیستمت نصب کنی. اگه نداری، می‌تونی از وب‌سایت رسمی Python دانلود و نصب کنی.
  • نصب pip: اگه pip رو نداری، باید نصبش کنی. معمولاً همراه با Python نصب می‌شه.
  • نصب Selenium: حالا وقتشه که Selenium رو نصب کنی. کافیه تو ترمینال یا خط فرمان بنویسی:

    pip install selenium

نصب در PHP

  • نصب PHP: اول باید PHP رو نصب کنی. می‌تونی از وب‌سایت رسمی PHP دانلود و نصب کنی.
  • نصب Composer: کامپوزر یه ابزار مدیریت پکیج برای PHP هست. از وب‌سایت رسمی Composer می‌تونی نصبش کنی.
  • نصب Selenium WebDriver برای PHP: با استفاده از Composer، Selenium WebDriver رو نصب کن:

    composer require php-webdriver/webdriver

نصب در Java

  • نصب Java: اول باید Java رو نصب کنی. می‌تونی از وب‌سایت رسمی Oracle دانلود و نصب کنی.
  • نصب Selenium WebDriver: از طریق Maven یا Gradle، Selenium WebDriver رو به پروژه‌ات اضافه کن. برای Maven:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>

نصب در C#

  • نصب .NET Core یا .NET Framework: اول باید .NET رو نصب کنی. می‌تونی از وب‌سایت رسمی Microsoft دانلود کنی.
  • نصب Selenium WebDriver: از طریق NuGet، Selenium WebDriver رو به پروژه‌ات اضافه کن:

    Install-Package Selenium.WebDriver

نصب در Ruby

  • نصب Ruby: اول باید Ruby رو نصب کنی. می‌تونی از وب‌سایت رسمی Ruby دانلود و نصب کنی.
  • نصب Selenium WebDriver: با استفاده از gem، Selenium WebDriver رو نصب کن:

    gem install selenium-webdriver

نصب در Node.js

  • نصب Node.js: اول باید Node.js رو نصب کنی. می‌تونی از وب‌سایت رسمی Node.js دانلود و نصب کنی.
  • نصب Selenium WebDriver: با استفاده از npm، Selenium WebDriver رو نصب کن:

    npm install selenium-webdriver

نصب در Go

  • نصب Go: اول باید Go رو نصب کنی. می‌تونی از وب‌سایت رسمی Go دانلود و نصب کنی.
  • نصب Selenium WebDriver: از کتابخانه selenium-go استفاده کن:

    go get -u github.com/tebeka/selenium

نصب WebDriver

برای اینکه بتونی مرورگرها رو با Selenium کنترل کنی، باید WebDriver مربوط به اون مرورگر رو نصب کنی. مثلاً اگه می‌خوای از Chrome استفاده کنی، باید ChromeDriver رو نصب کنی.

  • دانلود ChromeDriver: از وب‌سایت رسمی ChromeDriver نسخه مناسب برای سیستمت رو دانلود کن.
  • اضافه کردن به PATH: فایل دانلود شده رو به مسیر PATH سیستمت اضافه کن تا از هر جایی قابل دسترسی باشه.

مرورگرهای پشتیبانی‌شده در Selenium WebDriver در جدول زیر آمده:

مرورگروب‌درایور مخصوص مرورگرسیستم‌عامل‌های پشتیبانی شده
Google ChromeChromeDriverWindows/macOS/Linux
Mozilla FirefoxGeckoDriverWindows/macOS/Linux
Microsoft EdgeMicrosoft Edge WebDriverWindows/macOS/Linux
SafariSafariDriver (in-built)macOS High Sierra و جدیدتر

نوشتن اولین تست با Selenium

حالا که همه چیز رو نصب کردی، وقتشه که اولین تست خودکار رو بنویسی. بیایید با زبان‌های مختلف شروع کنیم.

مثال با Python

from selenium import webdriver
# تنظیمات WebDriver برای Chrome
driver = webdriver.Chrome()
# باز کردن وب‌سایت 7Learn
driver.get("https://www.7learn.com")
# بررسی عنوان صفحه
assert "7Learn" in driver.title
# بستن مرورگر
driver.quit()

مثال با PHP

<?php
require_once('vendor/autoload.php');
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
// تنظیمات WebDriver برای Chrome
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', DesiredCapabilities::chrome());
// باز کردن وب‌سایت 7Learn
$driver->get('https://www.7learn.com');
// بررسی عنوان صفحه
assert(strpos($driver->getTitle(), '7Learn') !== false);
// بستن مرورگر
$driver->quit();

مثال با Java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class SeleniumTest {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.7learn.com");
        if (driver.getTitle().contains("7Learn")) {
            System.out.println("Test Passed");
        } else {
            System.out.println("Test Failed");
        }
        driver.quit();
    }
}

مثال با C#

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
class Program {
    static void Main(string[] args) {
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://www.7learn.com");
        if (driver.Title.Contains("7Learn")) {
            Console.WriteLine("Test Passed");
        } else {
            Console.WriteLine("Test Failed");
        }
        driver.Quit();
    }
}

مثال با Ruby

require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome
driver.navigate.to "https://www.7learn.com"
if driver.title.include? "7Learn"
  puts "Test Passed"
else
  puts "Test Failed"
end
driver.quit

مثال با Node.js

const { Builder, By, until } = require('selenium-webdriver');
(async function example() {
    let driver = await new Builder().forBrowser('chrome').build();
    try {
        await driver.get('https://www.7learn.com');
        let title = await driver.getTitle();
        if (title.includes("7Learn")) {
            console.log("Test Passed");
        } else {
            console.log("Test Failed");
        }
    } finally {
        await driver.quit();
    }
})();

مثال با Go

package main
import (
    "fmt"
    "github.com/tebeka/selenium"
)
func main() {
    const (
        seleniumPath = "vendor/selenium-server.jar"
        chromeDriverPath = "vendor/chromedriver"
    )
    opts := []selenium.ServiceOption{}
    service, err := selenium.NewChromeDriverService(chromeDriverPath, 4444, opts...)
    if err != nil {
        panic(err)
    }
    defer service.Stop()
    caps := selenium.Capabilities{"browserName": "chrome"}
    wd, err := selenium.NewRemote(caps, "")
    if err != nil {
        panic(err)
    }
    defer wd.Quit()
    wd.Get("https://www.7learn.com")
    title, err := wd.Title()
    if err != nil {
        panic(err)
    }
    if title == "7Learn" {
        fmt.Println("Test Passed")
    } else {
        fmt.Println("Test Failed")
    }
}

آماده‌ای تا بریم سراغ چند نمونه کد دیگه؟

تا اینجا فهمیدیم که Selenium چیه و چه امکاناتی داره. حالا بریم چند تا مثال عملی با هم ببینیم تا بهتر متوجه بشی چطور می‌تونی از این ابزار فوق‌العاده استفاده کنی. مثال‌هارو با زبان پایتون میریم. آماده‌ای؟ شروع کنیم!

مثال ۱: لاگین به یک وب‌سایت

تو این مثال، می‌خوایم یه تست بنویسیم که به یه وب‌سایت لاگین کنه و بعد بررسی کنه که آیا لاگین موفقیت‌آمیز بوده یا نه. این یه سناریوی ساده و کاربردیه که خیلی وقتا به درد می‌خوره.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# تنظیمات WebDriver برای Chrome
driver = webdriver.Chrome()
# باز کردن وب‌سایت مورد نظر
driver.get("https://example.com/login")
# پیدا کردن فیلدهای لاگین و پر کردن اون‌ها
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
username.send_keys("myusername")
password.send_keys("mypassword")
password.send_keys(Keys.RETURN)
# بررسی موفقیت‌آمیز بودن لاگین
assert "Dashboard" in driver.title
# بستن مرورگر
driver.quit()

تو این کد، اول وب‌سایت مورد نظر رو باز می‌کنیم، فیلدهای لاگین رو پیدا می‌کنیم و اطلاعات کاربری رو وارد می‌کنیم. بعد از ارسال فرم، بررسی می‌کنیم که آیا عنوان صفحه شامل "Dashboard" هست یا نه.

مثال ۲: جستجو در گوگل

تو این مثال، می‌خوایم یه تست بنویسیم که یه جستجو در گوگل انجام بده و نتایج رو بررسی کنه. این سناریو هم خیلی کاربردیه و می‌تونه تو خیلی از پروژه‌ها به دردت بخوره.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# تنظیمات WebDriver برای Chrome
driver = webdriver.Chrome()
# باز کردن گوگل
driver.get("https://www.google.com")
# پیدا کردن فیلد جستجو و انجام جستجو
search_box = driver.find_element_by_name("q")
search_box.send_keys("7Learn")
search_box.send_keys(Keys.RETURN)
# بررسی نتایج جستجو
assert "7Learn" in driver.page_source
# بستن مرورگر
driver.quit()

تو این کد، اول گوگل رو باز می‌کنیم، فیلد جستجو رو پیدا می‌کنیم و عبارت "7Learn" رو جستجو می‌کنیم. بعد از نمایش نتایج، بررسی می‌کنیم که آیا صفحه شامل عبارت "7Learn" هست یا نه.

مثال ۳: بررسی لینک‌های خراب

تو این مثال، می‌خوایم یه تست بنویسیم که تمام لینک‌های یه صفحه وب رو بررسی کنه و لینک‌های خراب رو گزارش بده. این سناریو هم خیلی مفیده و می‌تونه به بهبود کیفیت وب‌سایت کمک کنه.

from selenium import webdriver
import requests
# تنظیمات WebDriver برای Chrome
driver = webdriver.Chrome()
# باز کردن وب‌سایت مورد نظر
driver.get("https://example.com")
# پیدا کردن تمام لینک‌ها
links = driver.find_elements_by_tag_name("a")
# بررسی لینک‌ها
for link in links:
    url = link.get_attribute("href")
    if url:
        response = requests.head(url)
        if response.status_code != 200:
            print(f"Broken link: {url}")
# بستن مرورگر
driver.quit()

تو این کد، اول وب‌سایت مورد نظر رو باز می‌کنیم، تمام لینک‌ها رو پیدا می‌کنیم و بعد هر لینک رو بررسی می‌کنیم که آیا سالمه یا خراب. اگه لینک خراب باشه، آدرس اون رو چاپ می‌کنیم.

مقایسه Selenium با ابزارهای مشابه

در دنیای امروز، ابزارهای مختلفی برای تست خودکار وجود دارند. هر کدوم از این ابزارها ویژگی‌ها و قابلیت‌های خاص خودشون رو دارن که بسته به نیازهای پروژه و ترجیحات تیم تست می‌تونه انتخاب مناسبی باشه. اما چرا باید Selenium رو انتخاب کنیم؟ بیا با هم نگاهی به برخی از رقبای Selenium بندازیم و مقایسه‌ای داشته باشیم.

Cypress

Cypress یکی از ابزارهای جدید تست خودکار هست که به‌سرعت محبوبیت زیادی پیدا کرده. این ابزار به‌ویژه برای تست برنامه‌های JavaScript و فریمورک‌هایی مثل React و Angular بسیار مناسبه. از مزایای Cypress می‌تونیم به اجرای سریع‌تر تست‌ها و دیباگینگ ساده‌تر اشاره کنیم. اما یکی از نقاط ضعف بزرگ Cypress اینه که پشتیبانی محدودی از مرورگرها داره. در حال حاضر، فقط از Chrome و Edge پشتیبانی می‌کنه.

TestCafe

TestCafe هم یه ابزار متن‌باز دیگه‌ست که برای تست خودکار برنامه‌های وب طراحی شده. این ابزار، برخلاف Selenium و Cypress، نیاز به WebDriver نداره و تست‌ها رو به‌طور مستقیم روی مرورگرها اجرا می‌کنه. TestCafe از مرورگرهای بیشتری نسبت به Cypress پشتیبانی می‌کنه، اما هنوز به اندازه Selenium انعطاف‌پذیر نیست.

جدول مقایسه

ویژگی‌هاSeleniumCypressTestCafe
زبان‌های پشتیبانی‌شدهJava, Python, C#, Ruby, PHP, Node.jsJavaScriptJavaScript
پشتیبانی از مرورگرهاChrome, Firefox, Safari, Edge, IEChrome, EdgeChrome, Firefox, Safari, Edge, IE
متن‌بازبلهبلهبله
نیاز به WebDriverبلهخیرخیر
سهولت دیباگینگمتوسطبالابالا
سرعت اجرای تست‌هامتوسطبالامتوسط
پشتیبانی از موبایلمحدود (با استفاده از Appium)خیرخیر
پشتیبانی از پلتفرم‌های مختلفبلهبله (به جز موبایل)بله (به جز موبایل)

تفاوت بین Selenium، Scrapy، BeautifulSoup و Puppeteer

تو دنیای وب و برنامه‌نویسی، ابزارهای مختلفی وجود دارن که هر کدوم برای کار خاصی طراحی شدن. حالا می‌خوایم با هم فرق بین چهار تا از این ابزارها یعنی Selenium، Scrapy، BeautifulSoup و Puppeteer رو بررسی کنیم. هر کدوم از این ابزارها برای یه هدف خاص استفاده می‌شن و با شناخت بهترشون، می‌تونی انتخاب بهتری داشته باشی. پس بیاید نگاهی بندازیم به تفاوت‌هاشون و برای هر کدوم مثالی بزنیم.

Scrapy

Scrapy یه فریم‌ورک مخصوص استخراج داده یا همون وب‌اسکریپینگ (Web Scraping) هست. این ابزار بیشتر برای جمع‌آوری داده از وب‌سایت‌ها استفاده می‌شه. Scrapy سورس HTML صفحات رو می‌خونه و داده‌های مورد نظرت رو استخراج می‌کنه، اما کدهای جاوااسکریپت رو تفسیر نمی‌کنه و داده‌های داینامیک رو لود نمی‌کنه.

مثلاً اگه بخوای اطلاعات محصولات یه فروشگاه آنلاین رو جمع‌آوری کنی، Scrapy این کار رو به بهترین شکل ممکن انجام می‌ده. فرض کن می‌خوای نام و قیمت محصولات رو استخراج کنی:

import scrapy
class ProductSpider(scrapy.Spider):
    name = 'product_spider'
    start_urls = ['http://example.com/products']
    def parse(self, response):
        for product in response.css('div.product'):
            yield {
                'name': product.css('h2.name::text').get(),
                'price': product.css('span.price::text').get(),
            }

BeautifulSoup

BeautifulSoup یه کتابخونه پایتون برای پارس کردن HTML و XML هست. این ابزار بهت کمک می‌کنه تا ساختار سند HTML رو بخونی و داده‌های مورد نظرت رو استخراج کنی. BeautifulSoup خودش به تنهایی نمی‌تونه صفحات وب رو بگیره، بلکه معمولاً با کتابخونه‌هایی مثل requests ترکیب می‌شه تا بتونه صفحات وب رو دانلود کنه و بعد داده‌ها رو پارس کنه.

مثلاً اگه بخوای عنوان صفحه 7Learn رو بخونی:

import requests
from bs4 import BeautifulSoup
url = 'https://www.7learn.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# استخراج عنوان صفحه
title = soup.title.string
print(title)

Puppeteer

Puppeteer توسط تیم Google ساخته شده و فقط برای مرورگر Chrome و نسخه بدون رابط کاربری اون، یعنی Chromium، استفاده می‌شه. Puppeteer با استفاده از Node.js نوشته شده و برای کارهای مرتبط با Chrome بهینه شده. این ابزار برای وظایفی مثل تولید تصاویر و PDF از صفحات وب، تست UI و استخراج داده بسیار سریع و کارآمده.

Puppeteer مثل Selenium مرورگر رو اجرا می‌کنه و کدهای جاوااسکریپت رو هم اجرا می‌کنه. مثلاً برای بررسی عنوان صفحه 7Learn:

const puppeteer = require('puppeteer');
(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://www.7learn.com');
    // استخراج عنوان صفحه
    const title = await page.title();
    console.log(title);
    await browser.close();
})();

نتیجه مقایسه Selenium، Scrapy، BeautifulSoup و Puppeteer

به طور خلاصه، هر یک از این ابزارها برای یه هدف خاص طراحی شدن:

  • Selenium برای اتوماسیون تست وب‌سایت‌ها و شبیه‌سازی تعاملات کاربر مناسبه. مرورگر رو اجرا می‌کنه و مثل یه کاربر واقعی با سایت تعامل داره.
  • Scrapy برای استخراج داده از وب‌سایت‌ها به صورت حرفه‌ای کاربرد داره. فقط سورس HTML رو می‌خونه و کدهای جاوااسکریپت رو تفسیر نمی‌کنه.
  • BeautifulSoup برای پارس کردن HTML و استخراج داده‌ها به صورت ساده و سریع مناسبه. با کتابخونه requests ترکیب می‌شه تا صفحات وب رو بگیره.
  • Puppeteer برای کار با مرورگر Chrome و انجام وظایف مرتبط با اون بهینه شده. مرورگر رو اجرا می‌کنه و کدهای جاوااسکریپت رو هم اجرا می‌کنه.

در ادامه یک جدول مقایسه‌ای بین Selenium، Scrapy، BeautifulSoup و Puppeteer رسم می‌کنیم که تفاوت‌ها و کاربردهای هر کدوم رو به صورت خلاصه نشون بده:

ویژگی‌هاSeleniumScrapyBeautifulSoupPuppeteer
کاربرد اصلیتست خودکار و اتوماسیون مرورگراستخراج داده و وب‌اسکریپینگپارس کردن HTML و استخراج دادهاتوماسیون مرورگر Chrome
اجرا کردن جاوااسکریپتبلهخیرخیربله
پشتیبانی از AJAXبلهبه‌طور غیر مستقیم (شبیه‌سازی درخواست)خیربله
زبان‌های برنامه‌نویسیPython, Java, C#, Ruby, PHP, Node.jsPythonPythonJavaScript (Node.js)
پشتیبانی از مرورگرهاChrome, Firefox, Safari, Edge, IE--Chrome, Chromium
متن‌بازبلهبلهبلهبله
سازگاری با پلتفرم‌هاWindows, macOS, LinuxWindows, macOS, LinuxWindows, macOS, LinuxWindows, macOS, Linux
سهولت استفادهمتوسطبالابالابالا
مناسب برای تستبلهخیرخیربله
مناسب برای اسکریپینگبله، اما نه بهینهبله، بهینهبله، اما نیاز به ترکیب با requestsبله، برای داده‌های داینامیک

پس بسته به نیازی که داری، می‌تونی ابزار مناسب رو انتخاب کنی و کارتو راحت‌تر و سریع‌تر انجام بدی. امیدوارم این توضیحات بهت کمک کرده باشه تا تفاوت‌ها و کاربردهای هر ابزار رو بهتر درک کنی!

سوالات متداول

1. Selenium چه تفاوتی با Cypress داره؟

Cypress بیشتر برای تست برنامه‌های JavaScript و فریمورک‌هایی مثل React و Angular مناسبه و امکانات زیادی داره. اما Selenium پشتیبانی گسترده‌تری از مرورگرها و زبان‌های برنامه‌نویسی مختلف داره.

2. برای شروع کار با Selenium چه زبانی رو پیشنهاد می‌کنی؟

Python یکی از بهترین گزینه‌ها برای شروع کار با Selenium هست. زبان ساده و قدرتمندی هست که به راحتی می‌تونی باهاش تست‌های خودکار بنویسی.

3. آیا می‌تونم از Selenium برای تست برنامه‌های موبایل استفاده کنم؟

بله، با استفاده از ابزارهایی مثل Appium که بر پایه Selenium ساخته شده‌اند، می‌تونی تست‌های خودکار برای برنامه‌های موبایل بنویسی.

4. چطور می‌تونم تست‌های خودکارم رو در مرورگرهای مختلف اجرا کنم؟

با استفاده از Selenium Grid می‌تونی تست‌های خودکار رو به‌صورت موازی روی چندین مرورگر و سیستم مختلف اجرا کنی.

5. آیا Selenium رایگانه؟

بله، Selenium کاملاً رایگان و متن‌باز هست و می‌تونی بدون هیچ هزینه‌ای ازش استفاده کنی.

6. Selenium WebDriver چیه؟

Selenium WebDriver یه ابزار اتوماسیون مرورگر کراس‌پلتفرم هست که معمولاً در تست خودکار نرم‌افزار استفاده می‌شه. WebDriver بیشتر توسط مهندسا استفاده می‌شه چون نیاز به نوشتن کد داره تا بتونه مرورگر رو اتوماسیون کنه.

7. Selenium IDE چیه؟

Selenium IDE یه افزونه مرورگر هست که می‌تونه تست‌های Selenium رو بدون نیاز به نوشتن کد تولید کنه. تو صنعت تست نرم‌افزار، این نوع ابزار به عنوان ابزار ضبط و پخش شناخته می‌شه.

8. Selenium از چه زبان‌های برنامه‌نویسی پشتیبانی می‌کنه؟

Selenium از زبان‌های برنامه‌نویسی مختلفی مثل Java، JavaScript، C#، Python، Ruby، PHP و غیره پشتیبانی می‌کنه.

جمع‌بندی

ابزارهای تست مثل Selenium برای فرآیند توسعه نرم‌افزار ضروری هستن. این ابزارها به متخصصین تضمین کیفیت (QA) کمک می‌کنن تا تست‌های مؤثر و جامع رو انجام بدن. Selenium یک ابزار قدرتمند و مستقل هست که امکان انجام انواع تست‌ها روی برنامه‌های وب رو فراهم می‌کنه. استفاده از Selenium می‌تونه به‌طور قابل توجهی کیفیت نرم‌افزار رو بهبود ببخشه و فرآیند استقرار رو سرعت ببخشه.

Selenium یک ابزار همه‌کاره هست که به‌طور گسترده برای تست برنامه‌های وب استفاده می‌شه. با این حال، فقط یکی از ابزارهای زیادیه که می‌تونن در یک چارچوب تست (testing framework) مورد استفاده قرار بگیرن. این چارچوب‌ها از مجموعه‌ای از ابزارهای مختلف که به زبان‌های برنامه‌نویسی خاصی اختصاص دارن، تشکیل شدن. برای مثال، JUnit و Cucumber معمولاً با Java استفاده می‌شن، در حالی که Chai، faker.js، dotenv و mochawesome بیشتر با JavaScript کاربرد دارن.

در حالی که Selenium برای سال‌ها یک ابزار اصلی برای تست برنامه‌های وب بوده، چارچوب‌های تست جدیدی هم پدید اومدن که اصلاً از Selenium استفاده نمی‌کنن. این ابزارها شامل Cypress، TestCafe و Playwright هستن که محبوبیت زیادی بین متخصصین QA به دست آوردن. بنابراین، مهمه که گزینه‌های موجود رو بررسی کنی و مناسب‌ترین چارچوب تست رو برای نیازهای خاص پروژه‌ت انتخاب کنی.

پس اگر می‌خوای وارد دنیای برنامه‌نویسی و توسعه وب بشی، یا حتی اگه فقط یه وب‌سایت کوچیک داری، پیشنهاد می‌کنم حتماً با Selenium آشنا بشی و از امکانات فوق‌العاده‌ش استفاده کنی. این ابزار می‌تونه بهت کمک کنه تا به سرعت و با کیفیت بیشتری پروژه‌هات رو توسعه بدی و به نتیجه برسی. موفق باشی!

۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
  • سلنیوم (Selenium) چیست؟
  • دنیایی بدون Selenium و ابزارهای تست
  • چرا باید Selenium رو بشناسیم؟
  • مزایای تست خودکار با Selenium
  • محدودیت‌های تست با Selenium
  • چگونه از Selenium استفاده کنیم؟
  • آماده‌ای تا بریم سراغ چند نمونه کد دیگه؟
  • مقایسه Selenium با ابزارهای مشابه
  • تفاوت بین Selenium، Scrapy، BeautifulSoup و Puppeteer
  • سوالات متداول
  • جمع‌بندی
اشتراک گذاری مقاله در :