سلنیوم مجموعه ای از کتابخانه ها است که برای تقلید از تعاملات کاربر با مرورگر استفاده می شود.
کاربران اسکریپت ها را با استفاده از کتابخانه های سلنیوم برای شبیه سازی تعاملات رایج مرورگر کاربر ، مانند حرکت به یک صفحه ، کلیک روی یک دکمه و پر کردن فرم ، می نویسند.
سلنیوم معمولاً در پروژه هایی که برنامه های جلویی وب (UI) ایجاد می کنند ، استفاده می شود. این برای خودکار کردن سناریوهایی استفاده می شود که تعامل کاربر با برنامه وب را تقلید می کنند.
برای استفاده از Selenium WebDriver در یک پروژه ، ابتدا باید Selenium Core و WebDriver Binaries را نصب کنیم.
همچنین باید مسیر مربوط به هر درایور قابل اجرا را تعیین کنیم.
اگر می خواهید از سلنیوم با جاوا استفاده کنید ، ساده ترین راه برای نصب سلنیوم استفاده از وابستگی Maven در پروژه شماست pom.xml
فایل:
org.seleniumhq.selenium
selenium-java
3.141.59
برای اجرای آزمایش های سلنیوم در مرورگر Google Chrome یا Firefox ، باید وابستگی مربوطه را در pom.xml
خود اضافه کنید. فایل:
org.seleniumhq.selenium
selenium-chrome-driver
3.141.59
org.seleniumhq.selenium
selenium-firefox-driver
3.141.59
برای اجرای آزمایش های سلنیوم در یک مرورگر خاص ، باید باینری WebDriver مخصوص مرورگر مربوطه را نصب کرده و مسیر صحیح را تنظیم کنید.
کروم برای تنظیم مسیر قابل اجرا به کروم در سیستم MacOS ، می توانید از موارد زیر استفاده کنید:
$ export PATH='$PATH:/path/to/chromedriver'
همچنین می توانید مسیر را به صورت برنامه نویسی و مستقیم در کد تنظیم کنید:
System.setProperty('webdriver.chrome.driver', '/path/to/chromedriver');
Firefox - Geckodriver:
System.setProperty('webdriver.gecko.driver', '/path/to/geckodriver');
حاشیه، غیرمتمرکز:
System.setProperty('webdriver.edge.driver', 'C:/path/to/MicrosoftWebDriver.exe');
اینترنت اکسپلورر:
System.setProperty('webdriver.ie.driver', 'C:/path/to/IEDriver.exe');
بعد از نصب سلنیوم ، در مرحله بعدی ایجاد یک درایور مرورگر خاص برای اجرای آزمایشات رابط کاربر است.
تست های سلنیوم در برابر رابط کاربری یک برنامه کاربردی هستند و برای کار با آنها نیاز به یک مرورگر است. می توانیم مشخص کنیم که می خواهیم آزمایشات خود را در برابر کدام مرورگر اجرا کنیم و سپس درایور مناسب را نمونه سازی کنیم.
توجه داشته باشید:آزمایش سلنیوم فقط برای استفاده می شود اتوماسیون رابط کاربر و آزمایشات در برابر یک مرورگر اجرا می شود.import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; WebDriver driver = new ChromeDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.Firefox.FirefoxDriver; WebDriver driver = new FirefoxDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; WebDriver driver = new EdgeDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; WebDriver driver = new InternetExplorerDriver();
هنگامی که یک جلسه فعال WebDriver داشتیم و یک مرورگر را راه اندازی کردیم ، کار بعدی که می خواهیم انجام دهیم این است که به یک صفحه برویم و تست ها را اجرا کنیم.
Selenium WebDriver روشهای مفیدی را برای تعامل با مرورگر فراهم می کند. ما می توانیم ناوبری را انجام دهیم و اطلاعات مربوط به صفحه فعلی را بدست آوریم.
برای رفتن به یک URL دو گزینه داریم:
//The short form driver.get('https://devqa.io'); //The long form driver.navigate().to('https://devqa.io');
سلنیوم back()
روش شبیه سازی کلیک کردن روی دکمه بازگشت مرورگر:
driver.navigate().back();
سلنیوم forward()
روش شبیه سازی کلیک کردن روی دکمه جلو مرورگر:
driver.navigate().forward();
سلنیوم refresh()
روش با کلیک کردن روی دکمه تازه سازی مرورگر شبیه سازی می شود:
driver.navigate().refresh();
سلنیوم همچنین روش هایی را برای به دست آوردن آدرس اینترنتی ، عنوان صفحه و منبع صفحه ارائه می دهد.
ما می توانیم URL صفحه فعلی را دریافت کنیم:
driver.getCurrentUrl();
می توانیم عنوان صفحه فعلی را بدست آوریم:
driver.getTitle();
ما می توانیم منبع صفحه فعلی را بدست آوریم:
driver.getPageSource();
برای بستن پنجره مرورگر فعلی:
driver.close();
توجه داشته باشید:بستن پنجره مرورگر نمی کند جلسه WebDriver را خاتمه دهید.برای پایان دادن به جلسه WebDriver در پایان آزمایش:
driver.quit();
روش ترک:
قبل از اینکه بتوانیم با یک عنصر وب تعامل داشته باشیم ، باید عنصر را در صفحه html قرار دهیم.
یکی از مهمترین مهارتهای مهندس اتوماسیون آزمایش که با Selenium WebDriver کار می کند این است که می تواند از روشهای مناسب برای تعیین عناصر در یک صفحه استفاده کند.
به عنوان مثال ، اگر می خواهیم روی پیوند کلیک کنیم ، تأیید کنیم که پیامی نمایش داده شده است یا برای کلیک روی دکمه ، ابتدا باید عنصر را پیدا کنیم.
Selenium WebDriver روش های مختلفی را برای تعیین عناصر در یک صفحه ارائه می دهد.
یک مکان یاب آنچه شما می خواهید در یک صفحه پیدا کنید را توصیف می کند. در جاوا ، با استفاده از By
مکان یابی ایجاد می کنیم کلاس
به عنوان مثال ، اگر می خواستیم h1
را پیدا کنیم عنصر عنوان در یک صفحه ، ما می نویسیم
WebElement h1Element = driver.findElement(By.tagName('h1'));
یا اگر می خواستیم تمام عناصر پاراگراف را در یک صفحه پیدا کنیم ، استفاده می کنیم
List pElements = driver.findElements(By.tagName('p'));
این روش با توجه به متنی که نمایش می دهد ، عناصر را پیدا می کند. این روش معمولاً مکان یاب ترجیحی برای پیوندهای موجود در یک صفحه است.
به عنوان مثال ، فرض کنید ما این پیوند را در یک صفحه داریم:
Forgotten Password
سپس ، پیوند را می توان با استفاده از:
driver.findElement(By.linkText('Forgotten Password'));
وقتی از متن دقیق پیوند مطمئن نیستیم اما می خواهیم پیوند یا پیوندهایی را پیدا کنیم حاوی یک متن داده شده ، ما می توانیم استفاده کنیم
driver.findElement(By.partialLinkText('Forgotten '));
یا
driver.findElement(By.partialLinkText('Password'));
هنگام استفاده از findElement
باید مراقب باشید با استفاده از این مکان یاب زیرا عناصر دیگری می توانند حاوی همان متن جزئی باشند ، بنابراین نباید از این مورد برای تعیین یک عنصر به تنهایی استفاده شود. بهتر است از آن برای تعیین گروهی از عناصر با استفاده از روش findElements
استفاده کنید.
این عناصر را بر اساس مقدار صفت کلاس قرار می دهد. این مورد فقط برای عناصر دارای ویژگی کلاس قابل استفاده است ، اما استفاده از آن با findElement
انتخاب خوبی نیست. روش.
با استفاده از همان مثال بالا با پیوند ، پیوند 'رمز فراموش شده' دارای یک کلاس CSS است: btn
| که می تواند برای مکان یابی آن استفاده شود
Forgotten Password
سپس ، پیوند را می توان با استفاده از:
driver.findElement(By.className('btn'));
توجه داشته باشید:از ویژگی کلاس برای صفحات یک ظاهر طراحی شده استفاده می شود ، بنابراین احتمال اینکه بسیاری از عناصر دارای کلاس یکسانی باشند وجود دارد.توسط id ، عناصر را با توجه به مقدار ویژگی id آنها پیدا می کند. پیوند در مثال بالا دارای شناسه ای است که می توانیم از آن استفاده کنیم:
Forgotten Password
سپس ، پیوند را می توان با استفاده از:
driver.findElement(By.id('change-password'));
اگر صفت id در دسترس باشد ، باید از آن به عنوان اولین انتخاب ترجیحی استفاده شود.
عناصر را با توجه به ویژگی صفت نام آنها تعیین می کند. معمولاً فقط می توان از آن برای تعیین عناصر فرم ساخته شده با استفاده از: ،
،
، و
.
در یک صفحه ورود به سیستم معمولی ، شما فیلدهای ورودی دارید که می تواند مانند موارد زیر باشد:
سپس می توانیم فیلد ایمیل را با ویژگی نام ورودی تعیین کنیم
driver.findElement(By.name('email'));
این یاب عناصر را با نام برچسب HTML خود پیدا می کند. از آنجا که اغلب موارد تکراری بسیاری از برچسب ها وجود دارد ، استفاده از این روش برای یافتن یک عنصر واحد ایده خوبی نیست.
استفاده معمول از مکان یابی یک عنصر با نام برچسب برای تعیین سرصفحه صفحه است ، زیرا فقط یکی از این موارد وجود دارد:
Welcome to DevQA!
سپس می توانیم قسمت عنوان را بر اساس نام برچسب قرار دهیم:
driver.findElement(By.tagName('h1'));
عناصر را از طریق موتور انتخابی W3 CSS درایور پیدا می کند. مکان یاب انتخابگر CSS بسیار قدرتمند است زیرا می توان از آن برای قرار دادن هر عنصر در صفحه استفاده کرد.
Forgotten Password
سپس می توانیم فیلد ایمیل را با ویژگی نام ورودی تعیین کنیم
driver.findElement(By.cssSelector('#change-password'));
اینجا ، #
شناسه عنصر را نشان می دهد. و .
notation ویژگی کلاس یک عنصر را نشان می دهد.
مثلا:
driver.findElement(By.cssSelector('.btn'));
مربوط:
مکان یاب XPath پیچیده ترین انتخاب برای استفاده است. این به دانش زبان پرسش XPath نیاز دارد ، بنابراین اگر به آن زبان پرسش مسلط نیستید ، یافتن عناصر با استفاده از پرس و جوهای XPath برای شما دشوار است.
بیایید به یک مثال استفاده از XPath برای این HTML نگاهی بیندازیم:
Change Password
سپس می توانیم فیلد ایمیل را با ویژگی نام ورودی تعیین کنیم
driver.findElement(By.xpath('//a[@id='change-password']'));
وقتی عنصری را در صفحه قرار دادیم ، می توانیم با استفاده از انواع روشهایی که سلنیوم ارائه می دهد با آن تعامل داشته باشیم.
Selenium WebDriver روشهای مختلفی را برای تعامل با عناصر وب مانند کلیک کردن روی دکمه های ارسال و وارد کردن متن در قسمت های ورودی فراهم می کند.
| | + _ | کلاس تعدادی روش دارد که می توانیم از آنها برای تعامل با عناصر صفحه استفاده کنیم. رایج ترین آنها عبارتند از:
WebElement
click()
clear()
sendKeys()
| | + _ | روش برای کلیک کردن روی عنصر وب مانند پیوند یا دکمه استفاده می شود.
مثال:
submit()
click()
| | + _ | روش مقدار فیلد ورودی را پاک می کند.
نکته:توصیه می شود از . پاک () روش قبل از وارد کردن متن در یک قسمت ورودی.مثال:
Menu
WebElement mToggle = driver.findElement(By.id('menu-toggle')); mToggle.click();
ما از clear()
استفاده می کنیم روش برای وارد کردن نویسه ها در یک جعبه فیلد ورودی.
مثال:
WebElement username = driver.findElement(By.id('username')); username.clear();
در زیر مثالی از نحوه استفاده از سلنیوم برای پر کردن فرم آورده شده است
sendKeys()
اکنون که اصول Selenium WebDriver را بیان کردیم ، زمان ساخت یک چارچوب فرا رسیده است.
بیاموزید که چگونه یک چارچوب سلنیوم را از ابتدا بسازید.
قسمت اول آموزش گام به گام نحوه ایجاد یک چارچوب سلنیوم WebDriver با استفاده از جاوا ، Maven و TestNG را ارائه می دهد.
بخش دوم بر ساختار آزمایش سلنیوم بر اساس مدل معروف Page Object تمرکز دارد.