【问题标题】:Which WebElements are filled by PageFactory.initElements?PageFactory.initElements 填充了哪些 WebElement?
【发布时间】:2013-01-10 19:26:44
【问题描述】:

我正在尝试在我的 Selenium 测试中使用 PageObject 设计模式,并且我有以下一组 Page 类:

  • PageObject 基类,用于跟踪 WebDriver 和站点的基 URL。它还具有私人 WebElement 资源,这些资源显示在网站的每个页面上,例如菜单栏和侧栏链接。有一些公共方法可以访问这些资源,例如登录和注销。
  • UserRolePage 扩展 PageObject 的类。根据登录用户的角色,这些类还有其他私有 WebElements,一旦用户登录,这些私有 WebElements 就会持续存在。还有一些公共方法可以访问这些资源。
  • 扩展UserRolePage类的特定页面(例如UserLandingPage)。它们有自己的特定页面WebElements 和操作。

当我使用方法创建一个新的UserLandingPage时:

 UserLandingPage userLanding = PageFactory.initElements(driver, UserLandingPage.class);

哪个WebElements 被填充?只是UserLandingPage 类可见的那些,还是PageFactory 以某种方式查看所有基类并填充这些WebElement?

【问题讨论】:

    标签: java selenium integration-testing selenium-webdriver pageobjects


    【解决方案1】:

    您已注释的所有可见字段都将初始化为关联的 Web 元素。

    【讨论】:

    • 那么我是否应该不能使用父类中的login()logout() 方法,因为这些字段对子类不可见?
    • 是的,我希望如此。可以通过公共登录/退出方法访问私有 WebElement。我认为这更像是一种延迟加载,当您需要它们时会发生 init。这就是为什么只在您尝试访问元素时而不是在实例化页面时抛出未找到异常的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多