【问题标题】:PageObject instance call does somethingPageObject 实例调用做了一些事情
【发布时间】:2018-11-09 09:55:36
【问题描述】:

所以我有一个页面对象来处理用户所在页面的所有主要功能。我想这样做,当调用页面对象的实例时发生了一些事情。在目前的情况下,我有:

public MyPageObject MY_SCREEN = new MyPageObject(this);

当我打电话给MY_SCREEN.fillMyScreenFields(); 我希望 MY_SCREEN 导航到该屏幕,而不在 fillMyScreenFields() 中实现导航功能

【问题讨论】:

  • 您必须在某个时间点进行导航。您可以在构造函数中执行此操作,也可以在单独的 goToPage() 方法中执行此操作。
  • @Andrejs 是的,你是对的,但是我如何在构造函数中调用它,而不在编译时创建 stackoverflow 异常

标签: java selenium automated-tests pageobjects


【解决方案1】:

我仍然不确定您的目标是什么以及如何获得 SO 异常,但您可以选择以下方法:

public class HomePage {

    Webdriver driver; // inject an instance using a DI framework

    // option 1: uses the above instance, created by DI or just plain 'new' keyword
    public HomePage(){
        driver.get("https://yourpage.com/");
    }

    // option 2: pass in the driver in your tests
    public HomePage(WebDriver driver){
        driver.get("https://yourpage.com/");
    }

    // option 3: best one, I'd advise against the above two options, 
    // there will come a situation when you want to init a page object, 
    // but you don't want to navigate to it
    public void openPage(){
        driver.get("https://yourpage.com/");
    }
}

这是一个repo,带有一个简单的页面对象模式示例

这是另一个 repo 使用流畅界面的更复杂的页面对象模式示例

(免责声明:两者都是我的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2012-07-26
    相关资源
    最近更新 更多