Junior
Kuidas organiseerite päise struktuuri?
sobes.tech AI
Vastus AI-lt
Virsbilde võib olla esitatud kui Page Object, mis sisaldab lokalisaatoreid ja meetodeid virsme elementidega suhtlemiseks (logo, menüüpunktid, otsingunupud, ostukorv jne).
Lokalisaatoreid saab hoida klassis või eraldi konfiguratsioonifailis.
Klassi struktuur võiks olla umbes selline:
public class HeaderPage {
// Virsme elementide lokalisaatorid
private final By logo = By.cssSelector(".header__logo");
private final By searchBar = By.id("search-input");
private final By cartIcon = By.xpath("//a[@class='header__cart']");
// Meetodid elementidega suhtlemiseks
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// Meetodid elementidega töötamiseks virsmes, näiteks menüü
public MenuItem clickMenuItem(String itemName) {
// Otsingu ja klõpsu loogika menüüpunktile
return new MenuItem(/*...*/); // Tagastame menüüpunkti objekti
}
}
Raskemate virsmete puhul, millel on rippmenüüd või alammenüüd, võib olla vajalik luua eraldi Page Object'id nende elementide jaoks, millele pääseb ligi virsme meetodite kaudu.
Projekti kaustastruktuuri näide:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
Testides kasutame HeaderPage meetodeid tegevuste ja kontrollide tegemiseks, mis on seotud virsmega:
public class HeaderTests extends BaseTest { // Baasklass initsialiseerimiseks
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// Kontroll, et toimus ümbersuunamine avalehele
// Näiteks assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // Eeldatakse, et on meetod otsingukonsooli klõpsamiseks
// Kontroll, et otsingutulemused kuvatakse
}
}
Selline lähenemine tagab koodi loetavuse, hooldatavuse ja korduvkasutatavuse, töötades erinevatel lehtedel virsmega.