簡體   English   中英

是否有任何優化方法來創建頁面 object?

[英]Is there any optimise way to create a page object?

我正在為我的自動化使用頁面 Object Model 並且我正在創建一個頁面 object 測試 ZA2F2ED4F28EBC2CAB1DCB4ZC2 示例代碼如下。

public class Test1 extends TestBase {
Page1 page1;
Page2 page2;
Page3 page3;
// and continues as number of pages increases

@BeforeTest
public void initialise() {
    this.page1 = new Page1(this);
    this.page2 = new Page2(this);
    this.page3 = new Page3(this);
    // and continues as number of pages increases
}

@Test
public void firstTest() {
    // my test script starts here
}
}

但隨着我的頁數增加,在測試 class 中創建的頁數 object 增加。 我想知道是否有任何其他優化方法來創建頁面 object 或者我在做什么是好的?

就在這里。

創建一個將從TestBase擴展的Page class ,並創建特定的Pages() class ,它將是頁面 class 的子 class 的Page class

我為 Page object model 創建了一個基本項目。 請參閱下面的 eclipse 項目結構:

在此處輸入圖像描述

測試庫TestBase

public class TestBase {
    
    protected static WebDriver driver;
    
    public TestBase() {
        System.out.println("Test Base Bot has been activated.");
    }
    
    public Page getPageObj() {
       return new Page();
    }
    
    @BeforeSuite
    public void setUpSuite() {
        System.setProperty("webdriver.chrome.driver", "C:\\Inc\\Desktop\\Selenium+Python\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        System.out.println("Before suite executed successfully");
    }

    @BeforeClass
    public void setUpTest() {
        PageFactory.initElements(driver, this);
        driver.get("https://fuelinsights.gasbuddy.com/Charts");
    }
    
    @AfterClass
    public void tearDownClass() {
        //driver.close();
    }
}

TestClass StackOverflowProblems.Java

public class StackOverflowProblems extends TestBase {
    
    @Test
    public void testSO() throws InterruptedException {
        getPageObj().loginPage().loginWithUser();
    }
}

Page class

public class Page extends TestBase {
    
    public Page(){
        System.out.println("Page bots are now in action");
    }
    
    public LoginPage loginPage() {
        return new LoginPage();
    }
    
    public HomePage homePage() {
        return new HomePage();
    }
    
    public DashBoard dashBoardPage() {
        return new DashBoard();
    }
    
}

登錄頁面.Java

public class LoginPage extends Page {

    @FindBy(xpath = "//div[@class='xxkkk20']")
    WebElement ele;
    
    public void loginWithUser() {
        System.out.println("Finally Bot has called this method.");
        driver.get("Your url here"); 
        System.out.println("Web drivers operations can be performed here");
        String html = ele.getAttribute("innerHTML");
        System.out.println(html);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM