გვერდის ობიექტის მოდელის ჩარჩო Java და WebDriver- ით

ეს სახელმძღვანელო ტესტის ავტომატიზაციის ჩარჩოს შემუშავების მეორე ნაწილია.

პირველ ნაწილში ჩვენ ვისწავლეთ როგორ უნდა შევქმნათ ჩარჩოს სტრუქტურა ნულიდან.

ამ სახელმძღვანელოში, ჩვენ ვაპირებთ შევქმნათ ბაზისური კლასები ჩარჩოსთვის.


Შენიშვნა:თუ ამ სახელმძღვანელოს 1 ნაწილი არ წაგიკითხავთ, მიჰყევით ინსტრუქციას როგორ შევქმნათ ტესტის ავტომატიზაციის ჩარჩო Scratch– დან .

გარდა ამისა, თქვენ შეგიძლიათ შეავსოთ ძირითადი ჩარჩო ჩემიდან GitHub რეპო .

მას შემდეგ, რაც ამ tutorial- ის 1-ლი ნაწილის ინსტრუქციას გაითვალისწინებთ ან რეპლონირებას მოახდენს, უნდა გქონდეთ ეს ოთხი Maven მოდული:


  • დომენი - კლასები, რომლებიც აღწერს ბიზნეს მოდელს
  • ჩარჩო - ძირითადი კლასები, რომლებიც ქმნიან ჩარჩოს
  • გვერდი-ობიექტები - თითოეული ვებსაიტის კომპონენტები და ლოკატორები
  • რეგრესი-ტესტები - ფაქტობრივი სატესტო კლასები, რომლებიც ეყრდნობიან გვერდის ობიექტებს

ჩვენი ჩარჩო დაეფუძნება Page Object Model- ის დიზაინის ნიმუშს. ჩვენ ასევე გამოვიყენებთ WebDriver– ს გვერდიფაბრიკა კლასი WebElement- ის ინიციალიზაციისთვის.



სელენიუმის გვერდის ობიექტის მოდელი

კარგი, ახლა, როდესაც შექმენით ბაზის სტრუქტურა, დავიწყოთ ბაზის კლასების დამატებით.

BasePage.java

იმ ჩარჩო მოდული, ჩვენ ვქმნით კლასს სახელწოდებით BasePage.java. გვერდის ობიექტის ყველა კლასი გააფართოებს BasePage- ს, რითაც მემკვიდრეობით მიიღება ყველა ძირითადი მეთოდი.

ჩვენს BasePage კლასს ექნება კონსტრუქტორი, რომელიც WebDriver ობიექტს იღებს WebDriverWait ობიექტის ინიციალიზაციისთვის. კონსტრუქტორი ასევე პასუხისმგებელი იქნება WebElement– ების ინიცირებაზე PageFactory– ის საშუალებით.


გარდა ამისა, ჩვენ ასევე გვექნება დალოცვის კომუნალური მეთოდები, რომ გაუმკლავდეთ სხვადასხვა დალოდებას, როგორიცაა WaitForElementToAppear.

ასე რომ, BasePage კლასი ასე გამოიყურება:

package rima.framework.core; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.PageFactory; import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class BasePage {
private static final int TIMEOUT = 5;
private static final int POLLING = 100;
protected WebDriver driver;
private WebDriverWait wait;
public BasePage(WebDriver driver) {
this.driver = driver;
wait = new WebDriverWait(driver, TIMEOUT, POLLING);
PageFactory.initElements(new AjaxElementLocatorFactory(driver, TIMEOUT), this);
}
protected void waitForElementToAppear(By locator) {
wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
}
protected void waitForElementToDisappear(By locator) {
wait.until(ExpectedConditions.invisibilityOfElementLocated(locator));
}
protected void waitForTextToDisappear(By locator, String text) {
wait.until(ExpectedConditions.not(ExpectedConditions.textToBe(locator, text)));
} }
Შენიშვნა:BasePage კლასში ჩვენ არ ვადგენთ WebDriver ობიექტს. ინიცირება ხდება BaseTest კლასში.

BaseTest.java

BaseTest კლასი ინახავს WebDriver ობიექტის ინიცირებისა და დასრულების მეთოდებს. მას შემდეგ, რაც ყველა სატესტო კლასი გააფართოებს BaseTest კლასს, მაშინ ინიციალიზაცია ხდება ჩუმად. ტესტის კლასები მიიღებენ WebDriver ობიექტს | _ | + + _ | დარეკვით მეთოდი

ასევე, ვინაიდან ვიყენებთ TestNG- ს, შეგვიძლია გამოვიყენოთ getDriver() და @BeforeSuite ანოტაციები, როგორიცაა:


@AfterSuite

გვერდის ობიექტების დამატება

ახლა, გვერდი-ობიექტები მოდული, ჩვენ ვქმნით ჩვენს პირველ გვერდის ობიექტს. ამ სახელმძღვანელოსთვის გამოვიყენებ Google- ის მთავარ გვერდს.

package rima.framework.core; import io.github.bonigarcia.wdm.ChromeDriverManager; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; public class BaseTest {
private WebDriver driver;
@BeforeSuite
public void beforeSuite() {
System.setProperty('headless', 'false'); // You can set this property elsewhere
String headless = System.getProperty('headless');

ChromeDriverManager.chromedriver();
if('true'.equals(headless)) {

ChromeOptions chromeOptions = new ChromeOptions();

chromeOptions.addArguments('--headless');

driver = new ChromeDriver(chromeOptions);
} else {

driver = new ChromeDriver();
}
}
@AfterSuite
public void afterSuite() {
if(null != driver) {

driver.close();

driver.quit();
}
}
public WebDriver getDriver() {
return driver;
} }

როგორც ხედავთ, ამ გვერდის ობიექტი ბევრს არ აკეთებს. მას აქვს მხოლოდ კონსტრუქტორი, რომელიც იღებს WebDriver ობიექტს და გადასცემს მას სუპერკლასის კონსტრუქტორს.

კიდევ ერთხელ გაითვალისწინეთ, რომ არცერთი გვერდი არ არის ობიექტი და არც BasePage იწყებს WebDriver ობიექტების ინიცირებას.

ამ სახელმძღვანელოს მე –3 ნაწილში ჩვენ დავამატებთ მეთოდებს Google– ის საწყისი გვერდის საძიებო ფუნქციის შესასრულებლად.




ტესტების დამატება

ჩვენ დავამატებთ ტესტებს რეგრესი-ტესტები მოდული

ჩვენ ვქმნით სატესტო კლასს, სახელწოდებით GoogleHomepageTests, ერთი სატესტო მეთოდით, რომელიც მხოლოდ აღადგენს ჩვენს GoogleHomepage გვერდის ობიექტს. ახლა ის სხვა ქმედებას არ ახორციელებს.

ამ სახელმძღვანელოს მე –3 ნაწილში დავამატებ შედეგების ძიებისა და გადამოწმების მეთოდებს.

package rima.pageobjects.homepage; import org.openqa.selenium.WebDriver; import rima.framework.core.BasePage; public class GoogleHomepage extends BasePage {
public GoogleHomepage(WebDriver driver) {
super(driver);
} }

როდესაც თქვენს IDE– ში ჩაატარებთ ზემოთ აღნიშნულ ტესტს, უნდა იხილოთ გახსნილი და დახურული Google Chrome ბრაუზერი.


იყავით თვალყური ამ tutorial– ის მე –3 ნაწილისთვის, სადაც მე ზემოთ მოყვანილ მაგალითს გადავიღებ ჩარჩოს გასაგრძელებლად მეტი კომპონენტის დამატებით.

ზემოთ მოყვანილი კოდის მიღება შეგიძლიათ აქ GitHub რეპო . იმედი მაქვს, რომ თქვენთვის სასარგებლო WebDriver Framework– ის სახელმძღვანელო თქვენთვის სასარგებლო აღმოჩნდა.

შემდგომი კითხვა: