Page Object Model Framework ကို Java နှင့် WebDriver ဖြင့်သုံးနိုင်သည်

ဤသင်ခန်းစာသည် Test Automation Framework ဖွံ့ဖြိုးတိုးတက်မှု၏ဒုတိယအပိုင်းဖြစ်သည်။

ပထမပိုင်းမှာ Framework ကိုဘယ်လိုတည်ဆောက်မလဲဆိုတာလေ့လာခဲ့တယ်။

ဒီသင်ခန်းစာမှာအခြေခံအတွက်အခြေခံအတန်းတွေဖန်တီးမယ်။


မှတ်စု:ဤသင်ခန်းစာ၏အပိုင်း ၁ ကိုသင်မဖတ်ပါကညွှန်ကြားချက်များကိုလိုက်နာပါ ခြစ်ရာကနေစမ်းသပ် Automation Framework ကိုဖန်တီးရန်ကိုဘယ်လို

တနည်းအားဖြင့်ဆိုသော်သင်သည်အခြေခံကျသောမူဘောင်ကိုငါ့ထံမှရယူနိုင်သည် GitHub repo

သင်ဤသင်ခန်းစာ၏အပိုင်း ၁ မှညွှန်ကြားချက်များကိုလိုက်နာပြီးသို့မဟုတ် repo ကိုပုံတူကူးယူပြီးသောအခါ၊ သင့်တွင်ဤ Maven module လေးခုရှိရမည်။


  • ဒိုမိန်း - စီးပွားရေးပုံစံကိုဖော်ပြသောအတန်းများ
  • မူဘောင် - မူဘောင်ကိုဖွဲ့စည်းသည့်အဓိကအတန်းများ
  • စာမျက်နှာ - အရာဝတ္ထု - ဝဘ်စာမျက်နှာတစ်ခုစီ၏အစိတ်အပိုင်းများနှင့်တည်နေရာများ
  • ဆုတ်ယုတ် - စမ်းသပ်မှု - စာမျက်နှာရှိအရာဝတ္ထုများပေါ်တွင်မှီခိုနေသောအမှန်တကယ်စမ်းသပ်မှုအတန်းများ

ကျွန်ုပ်တို့၏မူဘောင်သည် Page Object Model ပုံစံပုံစံပေါ်တွင်အခြေခံလိမ့်မည်။ ငါတို့သည်လည်း WebDriver ရဲ့သုံးပြီးလိမ့်မည် မင်္ဂလာပါ WebElements စတငျဖို့အတန်း။



ဆယ်လီနီယမ်စာမျက်နှာအရာဝတ္ထုမော်ဒယ်

အိုကေယခုသင်အခြေခံတည်ဆောက်ပုံကိုဖန်တီးပြီးပြီဆိုပါစို့၊ စာသင်ခန်းများကိုထပ်ထည့်ခြင်းဖြင့်စတင်ကြပါစို့။

BasePage.java

ထဲမှာ မူဘောင် BasePage.java ဟုခေါ်သည့်အတန်းတစ်ခုကိုဖန်တီးသည်။ page object အတန်းအားလုံးသည် BasePage ကိုတိုးချဲ့လိမ့်မည်။

ကျွန်ုပ်တို့၏ BasePage အတန်းတွင် WebDriverWait အရာဝတ္ထုတစ်ခုကိုအစပျိုးရန်အတွက် WebDriver object တစ်ခုကိုယူသောလုပ်ငန်းခွင်ရှိသည်။ PageFactory ကနေတစ်ဆင့် WebElements ကိုစတင်ဖို့ဆောက်လုပ်ရေးလုပ်ငန်းမှာတာဝန်ရှိလိမ့်မည်။


ထို့အပြင် WaitForElementToAppear ကဲ့သို့သောစောင့်ဆိုင်းမှုအမျိုးမျိုးကိုကိုင်တွယ်ရန်ကျွန်ုပ်တို့တွင် utility စောင့်ဆိုင်းသည့်နည်းလမ်းများလည်းရှိသည်။

ထို့ကြောင့် 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 အတန်းအစားကိုတိုးချဲ့မည်ဖြစ်သောကြောင့်နဂိုမူလအစပြုပြီးဖြစ်သည်။ Test အတန်းများသည် WebDriver object ကို getDriver() ကိုခေါ်ခြင်းဖြင့်ရလိမ့်မည် နည်းလမ်း။

ထို့အပြင်ကျွန်ုပ်တို့သည် TestNG ကိုအသုံးပြုနေစဉ် @BeforeSuite ကိုအသုံးပြုနိုင်သည် နှင့် @AfterSuite ထိုကဲ့သို့သောမှတ်စုများ:


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;
} }


စာမျက်နှာအရာဝတ္ထုများထည့်ခြင်း

အခုတော့၌တည်၏ စာမျက်နှာ - အရာဝတ္ထု ပထမ ဦး ဆုံး Page Object ကိုဖန်တီးသည်။ ဤသင်ခန်းစာအတွက်ကျွန်ုပ်သည် Google ပင်မစာမျက်နှာကိုအသုံးပြုမည်။

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);
} }

သင်မြင်သည့်အတိုင်းဤစာမျက်နှာသည်အရာရာမလုပ်ပါ။ ၎င်းတွင် WebDriver အရာဝတ္ထုတစ်ခုကိုယူပြီး၎င်းကို၎င်း၏ superclass လုပ်ငန်းခွင်သို့လွှဲပြောင်းပေးသည့်လုပ်ငန်းခွင်တစ်ခုသာရှိသည်။

တနည်းကား, စာမျက်နှာအရာဝတ္ထုမဟုတ်သလို BasePage အဘယ်သူအားမျှ WebDriver အရာဝတ္ထုအစပျိုးကြောင်းသတိပြုပါ။

ဒီသင်ခန်းစာရဲ့အပိုင်း ၃ မှာ၊ Google homepage ရဲ့ search function ကိုကိုင်တွယ်ဖြေရှင်းဖို့နည်းလမ်းတွေကိုကျွန်တော်တို့ထည့်ပါမယ်။




စမ်းသပ်မှုများထည့်ခြင်း

ကျနော်တို့အတွက်စမ်းသပ်မှုထည့်ပါ ဆုတ်ယုတ် - စမ်းသပ်မှု module ။

ကျွန်ုပ်တို့၏ GoogleHomepage စာမျက်နှာအရာဝတ္ထုကိုစမ်းသပ်သည့်စမ်းသပ်နည်းတစ်ခုဖြင့်ကျွန်ုပ်တို့သည် GoogleHomepageTests ဟုခေါ်သောစမ်းသပ်မှုအတန်းတစ်ခုကိုဖန်တီးသည်။ ယခုအဘို့, ကအခြားမည်သည့်အရေးယူမှုမလုပ်ပါဘူး။

ဤသင်ခန်းစာ၏အပိုင်း ၃ တွင်ရလဒ်များကိုရှာဖွေရန်နှင့်အတည်ပြုရန်နည်းလမ်းများကိုကျွန်ုပ်ထပ်မံထည့်မည်။

package rima.tests.homepage; import org.testng.annotations.Test; import rima.framework.core.BaseTest; import rima.pageobjects.homepage.GoogleHomepage; public class GoogleHomepageTests extends BaseTest {
@Test
public void homepageTests() {
GoogleHomepage googleHomepage = new GoogleHomepage(getDriver());
} }

အထက်ပါစမ်းသပ်မှုကိုသင်၏ IDE တွင်ပြုလုပ်သောအခါ Google Chrome ဘရောက်ဇာကိုဖွင့်ပြီးပိတ်ပါ။


ဒီသင်ခန်းစာ၏အပိုင်း ၃ ကိုချိန်ညှိပါ။ မူဘောင်ကိုတိုးချဲ့ရန်အစိတ်အပိုင်းများထပ်ပေါင်းထည့်ခြင်းဖြင့်အထက်ပါဥပမာကိုကျွန်ုပ်ထပ်မံတင်ပြပါမည်။

အထက်ဖော်ပြပါ source code အားလုံးကိုသင်ရရှိနိုင်သည် GitHub repo ။ အထက်ပါ WebDriver Framework သင်ခန်းစာသည်အသုံးဝင်ကြောင်းသင်မျှော်လင့်ပါသည်။

နောက်ထပ်ဖတ်ရန်:

စိတ်ဝင်စားစရာဆောင်းပါးများ