پنج شنبه , ۹ فروردین ۱۴۰۳

آموزش Selenium-قسمت سوم: Selenium WebDriver چیست و چه تفاوتی با Selenium RC دارد؟

Selenium
Selenium

WebDriver چیست؟

WebDriver یک چارچوب اتوماسیون وب(Web Aytomation Framework) است که اجازه می‌دهد تست‌های خود را روی مرورگرهای مختلف اجرا نمایید، که این فقط شامل فایرفاکس و کروم(بر خلاف Selenium IDE) نمی‌شود.

علاوه بر این WebDriver شما را قادر به استفاده از یک زبان برنامه‌نویسی در ایجاد Test Script می‌نماید، که البته در Selenium IDE امکان‌پذیر نیست.

اکنون شما می‌توانید در از عملیات‌های شرطی مانند if-then-else یا switch-case استفاده نمایید. همچنین شما می‌توانید حلقه‌هایی مانند do-while را نیز اجرا نمایید.

Selenium 3-1
Selenium 3-1

در زیر زبان‌های برنامه‌نویسی که توسط WebDriver پشتیبانی می‌شوند، ارائه شده است:

  • Java
  • Net.
  • PHP
  • Python
  • Perl
  • Ruby

لازم نیست شما همه آنها را بدانید. کافیست شما فقط در یکی از آنها صاحب دانش باشید. با این حال، در این آموزش، ما از جاوا به همراه Eclipse(به عنوان IDE) استفاده خواهیم کرد.

تفاوت میان Selenium RC و Selenium WebDriver

پیش از ظهور WebDriver در سال ۲۰۰۶، یک ابزار اتوماسیون دیگر به نام Selenium Remote Control وجود داشت. هر دو WebDriver و Selenium RC دارای ویژگی‌های زیر هستند:

  • هر دو آنها به شما اجازه می‌دهند از یک زبان برنامه‌نویسی در طراحی اسکریپت‌های تست استفاده کنید
  • هر دو آنها به شما اجازه می‌دهند تست‌های خود را روی مرورگرهای مختلف اجرا نمایید

با این اوصاف آنها چگونه با یکدیگر متفاوت هستند؟ بگذارید در مورد پاسخ‌ها صحبت کنیم

۱- معماری

معماری WebDriver ساده‌تر از Selenium RC است:

  • WebDriver مرورگر را از سطح سیستم عامل کنترل می‌کند
  • برای کار با WebDriver شما نیاز به IDE زبان برنامه‌نویسی(که شامل دستورات سلنیوم است) یک مرورگر دارید
Selenium 3-2
Selenium 3-2

معماری Selenium RC پیچیده تر است:

  • قبل از اینکه بتوانید شروع به تست کنید، ابتدا باید یک برنامه جداگانه به نام Selenium Remote Control-RC را راه‌اندازی نمایید
  • Selenium RC Server به عنوان یک واسطه بین دستورات سلنیوم(Selenium Command) و مرورگر شما عمل می‌کند
  • هنگام آغاز تست، Selenium RC Server یک برنامه Javascript به نام Selenium Core را به مرورگر شما تزریق(Inject) می‌کند
  • پس از تزریق، Selenium Core شروع به دریافت دستورالعمل‌های(Instructions) رها شده توسط RC Server از Test Program شما می‌کند
  • هنگامی که دستورالعمل‌ها دریافت می‌شوند، Selenium Core آنها را به عنوان دستورات Javascript اجرا می‌کند
  • مرورگر از دستورالعمل Selenium Core اطاعت کرده و پاسخ آن را به RC Server ارسال می‌کند
  • RC Server پاسخ مرورگر را دریافت نموده و سپس نتایج را برای شما نمایش می‌دهد
  • RC Server دستور بعدی را از Test Script خود دریافت خواهد کرد تا کل چرخه را تکرار کند
Selenium 3-3
Selenium 3-3

۲- سرعت

WebDriver سریعتر از Selenium RC است؛ زیرا مستقیما با مرورگری صحبت می‌کند که از موتور خود[مرورگر] برای کنترل آن استفاده می‌نماید.

Selenium RC کندتر از WebDriver است و مهمترین دلیل آن این است که از یک برنامه جاوااسکریپتی به نام Selenium Core استفاده می‌نماید. این Selenium Core است که مستقیما مرورگر را کنترل می‌کند، نه شما.

۳- تعاملات واقعی

Selenium 3-4
Selenium 3-4

WebDriver با عناصر صفحه با شیوه‌ای واقع گرایانه‌تر ارتباط و تعامل برقرار می‌کند. به عنوان مثال، اگر یک Text Box غیرفعال در صفحه‌ای داشته باشید که در حال تست آن هستید، WebDriver واقعا نمی‌تواند هیچ مقداری را در آن وارد نماید، درست همانطور که یک انسان واقعی قادر به انجام این کار نیست.

Selenium 3-5
Selenium 3-5

Selenium Core، درست مانند سایر کدهای جاوااسکریپت، می‌تواند به عناصر غیرفعال دسترسی پیدا کند. در گذشته، تسترهایی که با سلنیوم کار می‌کردند از این موضوع که Selenium Core قادر به وارد کردن مقادیر به Text Box غیر فعال در تست‌های آنهاست، شکایت می‌کردند.

۴- API

Selenium 3-6
Selenium 3-6

API مربوط به Selenium RC اکنون بالغ‌تر شده است اما هنوز هم شامل افزونگی(Redundency) و البته دستورالعمل‌های گیج کننده فراوان است. به عنوان مثال، اغلب زمان‌ها، تسترها اشتباه می‌کنند که آیا باید از type استفاده کنند یا از typeKeys؛ یا مثلا میان استفاده از click، mouseDown، mouseDownAt، گیج می‌شوند. بدتر از همه، مرورگرهای مختلف نیز هر کدام از این دستورات را به طرق مختلف تفسیر می‌کنند!

API مربوط به WebDriver از Selenium RC ساده‌تر است، و البته مهمتر از همه، دچار مشکل افزونگی دستورات و گیج‌کنندگی آنها نیست.

۵- پشتیبانی مرورگر

Selenium 3-7
Selenium 3-7

WebDriver می‌تواند مرورگر headless HtmlUnit را پشتیبانی کند.

HtmlUnit به این دلیل headless(بی سر و صدا) نامیده می‌شود که یک مرورگر نامرئی است. این مرورگر فاقد GUI است.

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

از آنجاییکه این مرورگر برای کاربر نامرئی است، می‌توان آنرا فقط از طریق ابزارهای اتومات شده کنترل کرد.
Selenium RC نمی‌تواند از مرورگر headless HtmlUnit پشتیبانی کند. برای اجرای آن نیاز به یک مرورگر واقعی و قابل مشاهده است.

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

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

Selenium RC یک Test Result Generator توکار(Built-in) دارد.
Selenium RC به طور خودکار یک فایل HTML از نتایج تست را تولید می‌کند. فرمت گزارش از پیش توسط RC تعیین شده است. یک نمونه از این گزارش را در زیر می‌بینید.

Selenium 3-8
Selenium 3-8

WebDriver دارای فرمان توکار(Built-in Command) نیست که به طور خودکار یک فایل از نتایج تست را تولید نماید. شما مجبورید به پنجره خروجی IDE خود تکیه کنید و یا خودتان با استفاده از قابلیت‌های زبان برنامه‌نویسی انتخابی‌تان گزارش خود را طراحی کرده و آن را به صورت متن، HTML و غیره ذخیره کنید.

نتیجه‌گیری

  • WebDriver یک ابزار برای تست برنامه‌های وب در بین مرورگرهای مختلف با استفاده از زبان‌های برنامه‌نویسی مختلف است.
  • در حال حاضر می‌توانید تست‌های قدرتمندی ایجاد کنید، چرا که WebDriver به شما اجازه می‌دهد از زبان برنامه‌نویسی انتخابی خود در طراحی تست‌هایتان استفاده کنید.
  • WebDriver به دلیل معماری ساده‌تر از Selenium RC سریعتر است.
  • WebDriver به طور مستقیم با مرورگر صحبت می‌کند در حالی که Selenium RC برای انجام این کار به کمک RC Server نیاز دارد.
  • API  مربوط به WebDriver نسبت به Selenium RC بسیار واضحتر است.
  • WebDriver می‌تواند از HtmlUnit پشتیبانی کند در حالی که Selenium RC قادر به انجام این کار نیست.
  • تنها اشکالات WebDriver عبارتند از:
    • WebDriver نمی‌تواند به راحتی از مرورگرهای جدید پشتیبانی کند، اما Selenium RC می‌تواند.
    • WebDriver فاقد دستور توکار(Built-in Command) برای تولید خودکار نتایج تست است.

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

ابوالفضل خواجه دیزجی

همچنین ببینید

Selenium

آموزش Selenium-قسمت هفدهم: Mouse Click Event و Keyboard Event و موضوع Action Class در Selenium WebDriver

در این بخش، ما رویداد کیبورد(Keyboard Event) و ماوس(Mouse Event) را در Selenium Webdriver آموزش …

۲ دیدگاه

  1. سلام من تازه می خوام شروع کنم به یادگیری فقط با توجه به دانش کمی که تو java دارم به مشکل نمی خورم ؟؟ بنظرتون بهتر اول جاوا یادبگیرم یا همزمان تو همین نرم افزار قابل یادگیری هست ؟؟

    • ابوالفضل خواجه دیزجی
      ابوالفضل خواجه دیزجی

      سلام. بله اگر می‌خواهید با Web Driver کار کنید، بهتر هست حتما یکی از زبان‌های پشتیبانی شده توسط Selenium Web Driver رو بلد باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *