Qaab-dhismeedka Qaab-dhismeedka Shayga Bogga leh Java iyo WebDriver

Casharradan waa qaybtii labaad ee horumarinta Qaab-dhismeedka Qaab-dhismeedka Imtixaanka.

Qeybtii hore, waxaan ku baranay sida loo abuuro qaabdhismeedka qaab dhismeedka laga soo bilaabay.

Casharradan, waxaan u abuureynaa fasallo saldhig u ah qaabdhismeedka.


Fiiro gaar ah:Haddii aadan aqrin qeybta 1-aad ee casharkaan, fadlan raac tilmaamaha ku saabsan Sida Loo Abuuro Qaab-dhismeedka Tijaabinta Naqshadaynta .

Haddii kale, waad isku dhejin kartaa qaabka aasaasiga ah ee kan GitHub repo .

Markaad raacdo tilmaamaha qaybta 1 ee casharradan ama aad ku dhejiso repo, waa inaad haysataa afartan nooc ee Maven:


  • domain - fasallo sharraxaya qaabka ganacsiga
  • qaab - fasallo muhiim ah oo qaabeeya qaab-dhismeedka
  • walxaha-bogga - qaybaha iyo tilmaamayaasha bog kasta
  • dib u noqoshada-imtixaannada - fasallada imtixaanka dhabta ah ee ku tiirsan waxyaabaha bogga

Qaab-dhismeedkayagu wuxuu ku salaysnaan doonaa qaabka naqshadeynta Qaabka Bogga. Waxaan sidoo kale adeegsan doonnaa WebDriver’s PageFactory fasalka si loo bilaabo WebElements.



Model Selection Bogga Selenium

Waayahay, hadda oo aad abuurtay qaabdhismeedka aasaasiga ah, aan bilowno inaan ku darno fasallada aasaasiga ah.

BasePage.java

Gudaha qaab module, waxaan abuurnay fasal la yiraahdo BasePage.java. Dhammaan fasallada walxaha bogga waxay dheereyn doonaan BasePage, sidaasna ku dhaxli doonaan dhammaan hababka aasaasiga ah.

Fasalkayaga 'BasePage' wuxuu yeelan doonaa dhisme u qaata shay WebDriver si loo bilaabo shay WebDriverWait. Dhisuhu sidoo kale wuxuu mas'uul ka noqon doonaa inuu bilaabo WebElements iyada oo loo marayo PageFactory.


Intaas waxaa sii dheer, waxaan sidoo kale yeelan doonnaa xoogaa habab sugitaan koronto si aan ula tacaalno sugitaannada kala duwan sida WaitForElementToAppear.

Marka, fasalka BasePage wuxuu u ekaan doonaa:

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)));
} }
Fiiro gaar ah:Fasalka BasePage kama aanan bilaabin shayga WebDriver. Bilaabidda waxaa lagu sameeyay fasalka BaseTest.

BaseTest.java

Fasalka BaseTest wuxuu hayaa habab lagu bilaabayo laguna joojinayo shayga WebDriver. Maaddaama dhammaan fasallada Imtixaanku ay kordhin doonaan fasalka BaseTest, markaa bilowga ayaa si toos ah loo qabanayaa. Fasallada Imtixaanku waxay si fudud ku heli doonaan sheyga WebDriver iyagoo wacaya getDriver() habka.

Sidoo kale, maadaama aan isticmaaleyno TestNG, waxaan adeegsan karnaa @BeforeSuite iyo @AfterSuite tilmaamaha, sida:


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


Ku darida Waxyaabaha Bogga

Hadda, ee walxaha-bogga module, waxaan abuureynaa Ujeedkeenna koowaad. Casharradan, waxaan u isticmaali doonaa bogga hore ee 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);
} }

Sida aad u aragto, sheyga boggan wax badan ma sameeyo. Kaliya waxay leedahay dhisme oo qaata shay WebDriver ah una gudbiya dhismaheeda superclass.

Mar labaad, la soco in bogga midkoodna walxo ama BasePage midkoodna uusan bilaabin Waxyaabaha WebDriver.

Qeybta 3 ee casharkaan, waxaan ku dari doonaa qaababka loo maareeyo howlaha raadinta ee hoyga Google.




Ku darista Imtixaanada

Waxaan ku darnaa imtixaanada dib u noqoshada-imtixaannada moduleka.

Waxaan abuurnay fasal tijaabo ah oo loo yaqaan 'GoogleHomepageTests', oo leh hal qaab tijaabo oo kaliya oo nooleyn kara shayga bogga GoogleHomepage. Hadda, ma sameyneyso ficil kale.

Qeybta 3 ee casharkaan, waxaan ku dari doonaa habab lagu raadiyo laguna xaqiijiyo natiijooyinka.

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

Markaad tijaabada kore ku wado IDE-gaaga, waa inaad aragtaa biraawsarka Google Chrome mid furan oo xidhan.


La soco Qaybta 3aad ee casharradan oo aan tusaalaha kor ku xusan ku sii kordhin doono anigoo ku dari doona qaybo badan si loo kordhiyo qaabka.

Waxaad ka heli kartaa dhammaan koodhka ilaha kor ku xusan GitHub repo . Waxaan rajeynaynaa inaad kaheshay casharka kore ee WebDriver Framework mid waxtar leh.

Akhrin Dheeraad ah: