首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有什么优化的方法来创建页面对象?

有没有什么优化的方法来创建页面对象?
EN

Stack Overflow用户
提问于 2021-05-23 15:23:23
回答 1查看 63关注 0票数 0

我使用页面对象模型来实现自动化,并在Test类中创建一个页面对象,如下所示(只是一个示例代码)

代码语言:javascript
运行
复制
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
}
}

但是随着页面数量的增加,在test类中创建页面对象的数量也会增加。我想知道是否有其他优化的方法来创建页面对象,或者我正在做的任何事情都是好的?

EN

回答 1

Stack Overflow用户

发布于 2021-05-23 15:26:35

是的有。

创建将从TestBase扩展的Page class,并创建特定的Pages()类,该类将成为Page class的子类。

我已经为Page对象模型创建了一个基本项目。请参阅下面的eclipse项目结构:

TestBase类:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
public class StackOverflowProblems extends TestBase {
    
    @Test
    public void testSO() throws InterruptedException {
        getPageObj().loginPage().loginWithUser();
    }
}

Page

代码语言:javascript
运行
复制
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();
    }
    
}

LoginPage.Java

代码语言:javascript
运行
复制
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);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67657211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档