آموزش سلنیوم

آنچه در این صفحه می خوانید:

معرفی سلنیوم (Selenium)

سلنیوم یک ابزار تست خودکار است. ما می توانیم هر برنامه کاربردی دسک تاپ (نرم افزار) و هر اپلیکیشن تلفن همراه را با استفاده از Selenium تست کنیم. سلنیوم مجموعه ای از ابزارهای نرم افزاری مختلف است که هر کدام با روشی متفاوت از اتوماسیون تست پشتیبانی می کند. بیشتر مهندسان  QA Selenium بر روی یک یا دو ابزار که بیشترین نیازهای پروژه را برآورده می کنند تمرکز می کنند، با این حال یادگیری تمام ابزارها، گزینه های مختلفی را برای نزدیک شدن به رفع مشکلات مختلف اتوماسیون تست به شما خواهد داد. هدف آن، مجهز بودن به مجموعه ای از توابع تست است که نیازهای تست هرگونه اپلیکیشن وب را برطرف می کند.  یکی از ویژگی های کلیدی Selenium پشتیبانی از اجرای تست ها در چندین پلتفرم مرورگر است. Selenium یک ابزار تست خودکار رایگان (متن باز) برای برنامه های وب در تمامی مرورگرهای مختلف پلتفرم ها است. سلنیوم کاملا به HP Quick Test Pro شباهت دارد، با این تفاوت که سلنیوم تنها بر روی خودکارسازی اپلیکیشن های مبتنی بر وب تمرکز دارد.  تست انجام شده با استفاده از ابزار سلنیوم معمولا به عنوان تست سلنیوم نامیده می شود. از آنجایی که سلنیوم مجموعه ای از ابزارهای مختلف است، پس دارای توسعه دهندگان مختلف است.

پیش نویس اولیه ی برنامه ی WebDriver API W3C منتشر شد سلنیوم یک فریمورک تست کاربردی وب است که به شما اجازه می دهد تا در بسیاری از زبان های برنامه نویسی مثل  جاوا، سی شارپ، Groovy، پرل، پی اچ پی، پایتون  و روبی تست های مورد نظر را بنویسید. سلنیوم در ویندوز، لینوکس و سیستم عامل MAC استفاده می شود.

تاریخچه سلنیوم (Selenium)

سلنیوم در ابتدا توسط جیسون هاگنز در سال 2004 به عنوان یک ابزار داخلی در ThoughtWorks ساخته شد. هاگوین بعداً در برنامه ThoughtWorks به سایر برنامه نویسان و آزمایش کنندگان پیوست، قبل از این که پل هامانت به تیم بپیوندد و هدایت توسعه حالت دوم عملکرد را که بعداً به "کنترل از راه دور سلنیوم" (RC) تبدیل می شود. آن سال ابزار باز شد.

در سال 2005، دن فابولیچ و نلسون اسپول (با کمک پت لایتوئه) پیشنهاد دادند كه مجموعه ای از تكه هایی را كه می توانند سلنیوم-RC را به آنچه بیشتر به آن معروف شده تبدیل كنند. در همان جلسه، هدایت سلنیوم به عنوان یک پروژه به عنوان کمیته ادامه خواهد یافت و هووین و هممان نمایندگان ThoughtWorks هستند.

در سال 2007، هاگنز به گوگل پیوست. او به همراه دیگران مانند جنیفر بوان، با توسعه و تثبیت سلنیوم RC ادامه یافت. در همین زمان، Simon Stewart در ThoughtWorks ابزاری برتر اتوماسیون مرورگر به نام WebDriver ایجاد کرد. در سال 2009، پس از ملاقات بین توسعه دهندگان در کنفرانس اتوماسیون تست Google، تصمیم به ادغام این دو پروژه گرفته شد و پروژه جدید Selenium WebDriver یا Selenium 2.0 را نامید.

در سال 2008، فیلیپ هانریگو (سپس در ThoughtWorks) ساخته شد "سلنیوم شبکه"، فراهم می کند که توپی برای اجرای چندین آزمایش سلنیوم به طور همزمان بر روی هر تعداد از سیستم های محلی یا از راه دور، فراهم می کند، بنابراین زمان اجرای آزمون را به حداقل می رساند. شبکه، به عنوان منبع باز، توانایی مشابهی با ابر Google داخلی / خصوصی را برای سلنیوم RC ارائه داده است. Pat Lightbody قبلاً ابر خصوصی را برای "HostedQA" ایجاد کرده بود که وی برای فروش به Gomez، Inc.

نام سلنیوم از شوخی ساخته شده توسط هاگنز از طریق ایمیل صورت گرفته است و رقیبی به نام Mercury را مسخره می کند و می گوید با استفاده از مکمل های سلنیوم می توانید مسمومیت جیوه را درمان کنید. بقیه کسانی که ایمیل را دریافت کرده اند نام را گرفتند و با آن فرار کردند.

معرفی تست خودکار

خودکارسازی تست نرم افزار با استفاده از ابزارهای تخصصی برای کنترل اجرای تست ها و مقایسه نتایج واقعی با نتایج مورد انتظار می باشد. معمولا تست های رگرسیون، که اقدامات تکراری هستند، به صورت خودکار انجام می شود. ابزار تست نه تنها به ما در انجام تست های رگرسیون کمک می کند، بلکه به ما کمک می کند تا تولید داده ها، نصب محصول، تعامل GUI، لاگ کردن نقص ها و غیره را به طور خودکار انجام دهیم.

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

ویژگی های سلنیوم (Selenium)

  • سلنیوم یک چارچوب تست وب منبع باز و قابل حمل است.
  • سلنیوم IDE بدون نیاز به یادگیری زبان برنامه نویسی آزمون، قابلیت پخش و ضبط را برای نوشتن تست فراهم می کند.
  • این می تواند به عنوان پیشرو تست بستر مبتنی بر ابر در نظر گرفته شود که به آزمایش کنندگان کمک می کند تا اقدامات خود را ضبط کنند و آنها را به عنوان یک اسکریپت قابل استفاده مجدد با یک رابط کاربری ساده برای درک و استفاده آسان صادر کنند.
  • سلنیوم از سیستم عامل های مختلف، مرورگرها و زبان های برنامه نویسی پشتیبانی می کند. در زیر لیست آمده است:
  • زبانهای برنامه نویسی: C#،Java ،Python ،PHP،Ruby، ​​Perl و JavaScript
  • سیستم عامل: Android، iOS، Windows، Linux، Mac، Solaris.
  • مرورگرها: Google Chrome، Mozilla Firefox، Internet Explorer، Edge، Opera، Safari و غیره.
  • همچنین از اجرای تست موازی پشتیبانی می کند که باعث کاهش زمان و افزایش کارآیی تست ها می شود.
  • سلنیوم برای جمع آوری کد منبع می تواند با چهارچوب هایی مانند مورچه و مaven یکپارچه شود.
  • سلنیوم همچنین می تواند با آزمایش چارچوب هایی مانند TestNG برای تست برنامه و تولید گزارش ها یکپارچه شود.
  • سلنیوم در مقایسه با سایر ابزارهای تست اتوماسیون به منابع کمتری نیاز دارد.
  • WebDriver API در سلنیوم یکی از مهمترین اصلاحات انجام شده در سلنیوم است.
  • درایور وب سلنیوم به نصب سرور احتیاج ندارد، اسکریپت های تست به طور مستقیم با مرورگر تعامل دارند.
  • دستورات سلنیوم از نظر کلاسهای مختلف طبقه بندی می شوند که درک و اجرای آن ساده تر است.
  • کنترل از راه دور سلنیوم (RC) در رابطه با WebDriver API با عنوان سلنیوم 2.0 شناخته می شود. این نسخه برای پشتیبانی از صفحات وب پر جنب و جوش و آژاکس ساخته شده است.

کامپوننت های سلنیوم (Selenium)

سلنیوم یک سیستم منبع باز است که به آزمایش برنامه های مختلف وب کمک می کند. این قابل استفاده در مرورگرهای مختلف است و کاربرد آن بسیار آسان است. این مجموعه ابزارهایی است که روش های مختلف آزمایش را ارائه می دهد. چهار مؤلفه وجود دارد که از سلنیوم تشکیل شده است. آنها سلنیوم IDE، سلنیوم RC، درایور وب و شبکه هستند. این زبان از زبان های مختلف مانند جاوا، PHP، روبی و پایتون پشتیبانی می کند. سلنیوم مستقل بودن از سکو از مزیت دیگری برخوردار است. این کتابخانه دارای کلاس ها، روش ها و رابط های مختلفی است. این دلیل اصلی استفاده سلنیوم توسط سازمان های مختلف است.

  • محیط توسعه یکپارچه سلنیوم (IDE)
  • کنترل از راه دور سلنیم (RC)
  • WebDriver
  • شبکه سلنیوم (GRID)

محیط توسعه یکپارچه سلنیوم (IDE)

این ساده ترین مجموعه موجود در مجموعه سلنیوم است. سلنیوم IDE اجازه ضبط و پخش اسکریپت ها را می دهد. با استفاده از پسوند Firefox پیاده سازی می شود. با استفاده از سلنیوم می توانید تست های مختلفی را ضبط، ویرایش و اشکال زدایی کنید. تست های ایجاد شده با داشتن تست های مختلف در مجموعه های مختلف به راحتی قابل تنظیم است. عملکرد ضبط و پخش در نمونه سازی ابزار کمک می کند و سهولت یادگیری را فراهم می کند. این به عنوان یک راه حل کلی برای توسعه و نگهداری سوئیت های مختلف عمل می کند. داشتن دانش پایه در مورد HTML، JavaScript و DOM می تواند در استفاده از بهترین سلنیوم IDE به آزمایش کننده کمک کند. وقتی آزمایش کننده موارد تست را ایجاد می کند، ویژگی تکمیل خودکار این موارد را نشان می دهد. این به وارد کردن سریع دستورات کمک می کند و باعث صرفه جویی در وقت می شود. همچنین شانس ورود به دستورات نامعتبر را کاهش می دهد.

کنترل از راه دور سلنیم (RC)

کنترل از راه دور سلنیوم یک ابزار آزمایش است که به نوشتن اسکریپت های تست برای برنامه های مبتنی بر وب به هر زبان برنامه نویسی کمک می کند. دو قسمت دارد. اولین موردی است که مرورگرها را راه اندازی و از بین می برد. این سرور به عنوان یک سرویس دهنده پروکسی HTTP برای درخواست های مختلف وب عمل می کند. همچنین از کتابخانه های مختلف مشتری پشتیبانی می کند. Selenium RC اولین ابزاری است که از زبانهای برنامه نویسی مختلفی مانند Java، Ruby، ​​Perl، PHP و غیره پشتیبانی می کند. در سلنیوم لازم است تا قبل از شروع آزمایش، سرور سلنیوم را شروع کنید. سرور سلنیوم مرورگرها را از بین می برد و فرامین Selenese را اجرا می کند که به عنوان یک پروکسی HTTP عمل می کند و پیام ها را رهگیری می کند.

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

سلنیوم وب درایور (Web driver)

درایور وب پسوند Selenium RC است. این پشتیبانی از آخرین مرورگرها و سیستم عامل های مختلف. دیگر نیازی به شروع سرور سلنیوم قبل از شروع اجرای اسکریپت های تست مختلف نیست. درایور وب سلنیوم به جاوا اسکریپت نیاز ندارد. این برنامه به منظور پشتیبانی از صفحات وب پویا ایجاد شده است که در آن هر عنصری که در صفحه حضور داشته باشد می تواند بدون بارگذاری مجدد صفحه تغییر کند. این یک API طراحی شده مناسب را فراهم می کند که پشتیبانی بهتری را برای برنامه های وب تست مدرن فراهم می کند. درایور وب به روشی ایجاد می شود که با استفاده از پشتیبانی بومی برای اتوماسیون، مستقیماً با مرورگر تماس می گیرد.

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

شبکه سلنیوم (GRID)

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

دو نسخه از Grid وجود دارد. آنها Grid 1 و Grid 2 هستند. مرکز اصلی که در آن همه موارد آزمایش بارگیری می شود. باید فقط یک توپی در شبکه وجود داشته باشد. تعداد گره ها در شبکه وجود دارد. همچنین گره ها را می توان در سیستم عامل ها و مرورگرهای مختلف راه اندازی کرد.

Selenium-WebDriver از مرورگرهای زیر همراه با سیستم عامل های این مرورگرها پشتیبانی می کند:

  • Google Chrome
  • Internet Explorer 7،8،9،10،11
  • Vista
  • Windows 7، Windows 8
  • Firefox
  • Safari
  • Opera
  • HtmlUnit
  • phantomjs
  • Android
  • iOS

استفاده از سلنیوم در پایتون

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

الزامات سلنیوم پایتون یک API ساده برای نوشتن تست های کاربردی / پذیرش با استفاده از سلنیوم وب دایور ارائه می دهد. از طریق API سلنیوم پایتون می توانید به کلیه عملکردهای وب سلنیوم WebDriver به روشی بصری دسترسی داشته باشید. الزامات سلنیوم پایتون یک API مناسب برای دسترسی به Selenium WebDrivers مانند Firefox، IE، Chrome، Remote و غیره فراهم می کند. نسخه های پایتون که در حال حاضر پشتیبانی می شوند 2.7، 3.5 و بالاتر هستند.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located

#This example requires Selenium WebDriver 3.13 or newer with webdriver.Firefox() as driver: wait = WebDriverWait(driver, 10) driver.get("https://google.com/ncr") driver.find_element_by_name("q").send_keys("cheese" + Keys.RETURN) first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR, "h3>div"))) print(first_result.get_attribute("textContent"))

استفاده از سلنیوم در جاوا

جاوا یک زبان برنامه نویسی محبوب است. مطابق با StackOverflow، این سومین فن آوری پشتیبان محبوب پس از JavaScript و SQL است.

چرا توسعه دهندگان سلنیوم را با جاوا ترجیح می دهند؟

یک جامعه خوب از توسعه دهندگان برای ایجاد اسناد و مدارک و حل مشکلات به جاوا کمک کرده اند تا به محبوب ترین زبان در بین توسعه دهندگان برنامه تبدیل شود. بنابراین، نوشتن موارد تست سلنیوم با استفاده از جاوا چندین مزیت دارد:

  • سلنیوم از جاوا پشتیبانی می کند. بنابراین، آزمایش کنندگان می توانند از جامعه فعال مشارکت کنندگان و مستندات دقیق برای نوشتن پرونده های آزمون استفاده کنند
  • برنامه هایی که در جاوا نوشته شده سریعتر از سایر زبان های محبوب مانند پایتون است
  • جاوا در مقایسه با سایر زبان های برنامه نویسی مانند پایتون بیشتر مورد استفاده قرار می گیرد و از این رو تلفیق تست سلنیوم راحت تر است.
  • درنهایت انتخاب زبان مناسب با پروژه، سازمان و افراد هدایت آن متفاوت است. یک معیار اساسی شناخت عمیق زبان هنگام برخورد با سلنیوم است.

برای شروع مجدد Selenium Webdriver با جاوا، لازم است مؤلفه های مختلف را با هم جمع کنید، برای شروع برنامه نویسی. سلنیوم با چندین سیستم عامل مانند Windows، Linux، Solaris، Macintosh سازگار است. همچنین از چندین مرورگر مانند Chrome، Safari، IE، Edge، Firefox پشتیبانی می کند. برای خودکارسازی تست های عملکردی استفاده می شود. همچنین، سلنیوم برای دستیابی به یک روش آزمایش مداوم آسان با ابزارهایی مانند جنکینز، مaven و داکر آسان است. ابزارهایی مانند TestNG و JUnit در ساخت تست های سلنیوم برای حفظ سهولت و تهیه گزارش کمک می کنند.

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;

public class HelloSelenium {

public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); WebDriverWait wait = new WebDriverWait(driver, 10); try { driver.get("https://google.com/ncr"); driver.findElement(By.name("q")).sendKeys("cheese" + Keys.ENTER); WebElement firstResult = wait.until(presenceOfElementLocated(By.cssSelector("h3>div"))); System.out.println(firstResult.getAttribute("textContent")); } finally { driver.quit(); } } }

استفاده از سلنیوم در سی شارپ

BrowserStack به شما امکان دسترسی فوری به سلنیوم شبکه 2000+ دستگاههای واقعی و مرورگرهای دسک تاپ را می دهد. اجرای تست سلنیوم با سی شارپ در BrowserStack ساده است. این راهنما به شما کمک می کند:

  • یک نمونه تست Selenium Webdriver را در BrowserStack اجرا کنید.
  • محیط خود را تنظیم کنید تا بتوانید URL ها را در شبکه داخلی خود آزمایش کنید.
  • قابلیت های اصلی موجود در مجموعه آزمون سلنیوم را درک کرده و پیکربندی کنید.
  • ویژگی های پیشرفته را کاوش کنید.
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
using SeleniumExtras.WaitHelpers;

class HelloSelenium { static void Main() { using (IWebDriver driver = new FirefoxDriver()) { WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); driver.Navigate().GoToUrl("https://www.google.com/ncr"); driver.FindElement(By.Name("q")).SendKeys("cheese" + Keys.Enter); IWebElement firstResult = wait.Until(ExpectedConditions.ElementExists(By.CssSelector("h3>div"))); Console.WriteLine(firstResult.GetAttribute("textContent")); } } }

استفاده از سلنیوم در جاوااسکریپت

جاوااسکریپت زبان مورد نظر در داخل مرورگر برای تعامل با دامنه HTML است. این بدان معناست که یک مرورگر از اجرای JavaScript در آن استفاده کرده و دستورات جاوا اسکریپت را درک می کند. می توانید با استفاده از گزینه های مرورگر در مرورگر خود آن را غیرفعال کنید.

جاوا اسکریپت همچنین زبانی بود که توسط نسخه های قبلی سلنیوم مورد استفاده قرار می گرفت، هنوز توسط درایور وب سلنیوم برای انجام برخی اقدامات استفاده می شود. برای مثال سلنیوم برای غلبه بر کمبود موتور Xpath در اینترنت اکسپلورر، Xpath را در JavaScript برای IE اجرا کرده است. درک جاوا اسکریپت سرگرم کننده است و می تواند شما را قادر به انجام کارهای جالب بسیاری کند که در غیر این صورت ممکن است مشکل پیدا کنید. بیایید درک کنیم چگونه WebDriver روشی را به نام Driver.executeScript به شما می دهد که جاوا اسکریپت را در متن صفحه مرورگر بارگذاری شده اجرا می کند. اولین چیزی که می دانید JavaScriptExrator به طور جداگانه می آید و تحت WebDriver نیز قرار دارد اما هر دو کار مشابهی را انجام می دهند. در WebDriver به عنوان ExecuteScript نامگذاری شده است. در زیر نمونه هایی را برای هر دو مشاهده می کنید. می توانید از هر یک از آنها استفاده کنید.

const {Builder, By, Key, until} = require('selenium-webdriver');

(async function example() { let driver = await new Builder().forBrowser('firefox').build(); try { // Navigate to Url await driver.get('https://www.google.com');

// Enter text "cheese" and perform keyboard action "Enter" await driver.findElement(By.name('q')).sendKeys('cheese', Key.ENTER);

let firstResult = await driver.wait(until.elementLocated(By.css('h3>div')), 10000);

console.log(await firstResult.getAttribute('textContent')); } finally{ driver.quit(); } })();

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود