Sobes.tech
Junior

Ինչպե՞ս եք կազմակերպում հեդերի կառուցվածքը:

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(); // Կան մեթոդներ որոնման պատկերակի վրա սեղմելու համար
        // Ստուգում, որ ցուցադրվում են որոնման արդյունքները
    }
}

Այս մոտեցումը ապահովում է կարդալելիություն, պահպանելիություն և կրկնվող օգտագործում՝ հեդերի հետ աշխատելու ժամանակ տարբեր էջերում։