როგორ აწყობთ ჰედერის სტრუქტურას?
sobes.tech AI
პასუხი AI-სგან
გადახედვა შეიძლება წარმოდგენილ იყოს როგორც Page Object, რომელიც შეიცავს ლოკატორებს და მეთოდებს ჰედერის ელემენტებთან ურთიერთობისთვის (ლოგო, მენიუს პუნქტები, ძიების ღილაკები, კალათა და ა.შ.).
ლოკატორებს შეიძლება შეინახოთ კლასი ან ცალკე კონფიგურაციის ფაილში.
კლასის სტრუქტურა დაახლოებით ასე იქნება:
public class HeaderPage {
// ჰედერის ელემენტების ლოკატორები
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']");
// მეთოდები ელემენტებთან ურთიერთობისთვის
public void clickLogo() {
driver.findElement(logo).click();
}
public void enterSearchTerm(String term) {
driver.findElement(searchBar).sendKeys(term);
}
public void clickCartIcon() {
driver.findElement(cartIcon).click();
}
// მეთოდები მენიუს პუნქტებთან მუშაობისთვის
public MenuItem clickMenuItem(String itemName) {
// მენიუს პუნქტის ძებნის და კლიკის ლოგიკა
return new MenuItem(/*...*/); // აბრუნებს მენიუს პუნქტის ობიექტს
}
}
სწორად, უფრო რთული ჰედერებისთვის, რომლებიც შეიცავს ჩამოსაშლელ მენიუებს ან ქვემენიუებს, შეიძლება საჭირო გახდეს ამ ელემენტებისთვის ცალკე Page Object-ების შექმნა, რომელთა წვდომაც მოხდება ჰედერის მეთოდების მეშვეობით.
პროექტის ფოლდერების სტრუქტურის მაგალითი:
src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── project/
│ └── pages/
│ ├── HeaderPage.java
│ └── components/
│ ├── MenuItem.java
│ └── SearchBar.java
└── test/
└── java/
└── com/
└── example/
└── project/
└── tests/
└── HeaderTests.java
ტესტებში ჩვენ გამოვიყენებთ HeaderPage-ის მეთოდებს, რათა შევასრულოთ მოქმედებები და ჩატარდეს შემოწმებები, რომლებიც დაკავშირებულია ჰედერთან:
public class HeaderTests extends BaseTest { // ბაზის კლასი ინიციალიზაციისთვის
@Test
public void testLogoClickNavigatesToHomePage() {
HeaderPage header = new HeaderPage();
header.clickLogo();
// შემოწმება, რომ მოხდა გადასვლა მთავარ გვერდზე
// მაგალითად, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
}
@Test
public void testCanSearchFromHeader() {
HeaderPage header = new HeaderPage();
header.enterSearchTerm("test product");
header.clickSearchIcon(); // მოსალოდნელია, რომ მეთოდი არსებობს ძიების ხატზე კლიკისთვის
// შემოწმება, რომ გამოჩნდნენ ძიების შედეგები
}
}
ასეთი მიდგომა უზრუნველყოფს კოდის წაკითხვადობას, შენარჩუნებადობას და განმეორებით გამოყენებას ჰედერთან მუშაობისას სხვადასხვა გვერდებზე.