ဤသင်ခန်းစာသည် Test Automation Framework ဖွံ့ဖြိုးတိုးတက်မှု၏ဒုတိယအပိုင်းဖြစ်သည်။
ပထမပိုင်းမှာ Framework ကိုဘယ်လိုတည်ဆောက်မလဲဆိုတာလေ့လာခဲ့တယ်။
ဒီသင်ခန်းစာမှာအခြေခံအတွက်အခြေခံအတန်းတွေဖန်တီးမယ်။
တနည်းအားဖြင့်ဆိုသော်သင်သည်အခြေခံကျသောမူဘောင်ကိုငါ့ထံမှရယူနိုင်သည် GitHub repo ။
သင်ဤသင်ခန်းစာ၏အပိုင်း ၁ မှညွှန်ကြားချက်များကိုလိုက်နာပြီးသို့မဟုတ် repo ကိုပုံတူကူးယူပြီးသောအခါ၊ သင့်တွင်ဤ Maven module လေးခုရှိရမည်။
ကျွန်ုပ်တို့၏မူဘောင်သည် Page Object Model ပုံစံပုံစံပေါ်တွင်အခြေခံလိမ့်မည်။ ငါတို့သည်လည်း WebDriver ရဲ့သုံးပြီးလိမ့်မည် မင်္ဂလာပါ WebElements စတငျဖို့အတန်း။
အိုကေယခုသင်အခြေခံတည်ဆောက်ပုံကိုဖန်တီးပြီးပြီဆိုပါစို့၊ စာသင်ခန်းများကိုထပ်ထည့်ခြင်းဖြင့်စတင်ကြပါစို့။
ထဲမှာ မူဘောင် 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 အတန်းအစားသည် 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 သင်ခန်းစာသည်အသုံးဝင်ကြောင်းသင်မျှော်လင့်ပါသည်။
နောက်ထပ်ဖတ်ရန်: