【问题标题】:What is the best way to use Page Object Model with Page Fatcory将页面对象模型与 Pagefactory 一起使用的最佳方法是什么
【发布时间】:2020-02-11 18:03:02
【问题描述】:

我目前的任务是用 Java 创建一个自动化框架,我与架构师就测试设计发生了争执。下面是我当前框架的样子,包括 Maven、POM 和 PageFactory。

项目
- 实用程序包 - 包含所有实用程序类
- Locators - 仅包含网站的 WebElements(页面工厂)
- Actions - 包含定位器的点击、发送键和其他操作
- Step - 调用和断言 Action 类方法(黄瓜步骤定义)
- 自定义监听器 - 监听器类

架构师建议我删除操作类并在定位器类本身中添加所有操作,这样可以避免为每个定位器类创建额外的类。但我的想法是随着项目的扩大,这看起来会更混乱。因此,我尝试将定位器分隔为不同的类,并在不同的类中对其执行操作。所以想问什么是最好的方法,在定位器类中添加动作还是分离?

【问题讨论】:

    标签: java maven selenium frameworks


    【解决方案1】:

    页面对象模型,您可以在其中将所有网络定位器分配到单个文件中。根据不同的场景、不同的网页或您定义的自定义实用程序(如果有),应该有不同的类。

    您可以通过两种方法使用页面对象模型:-

    -简单定义:(有很多规定可以在没有WebElement引用的情况下实现这些东西,直接使用By reference。因此根本不需要为Web元素赋值。)

    By demo_get_text=By.className("xyz");
    

    -使用页面工厂:(它从上面执行得更快)

    @FindBy(className="xyz")  WebElement demo_get_text;
    

    【讨论】:

      【解决方案2】:

      是的,你的方法更好。所有常见的操作都应该在一个类下,并且每个页面对象类都应该扩展它。通过这样做,这将使您的测试更加健壮,并防止页面类被驱动程序实现细节污染。

      【讨论】:

        【解决方案3】:

        虽然这是一个固执己见的问题,但我建议使用您的软件架构师的方法并删除 Action 类。我不确定 Step 类的目的是什么,所以我也会删除它们。

        • 项目
          • 实用程序
          • 页面对象
          • 自定义监听器
          • 网络驱动程序

        您可以创建一个包含所有常用定位器和方法的 BasePageObject,例如处理一些导航栏或菜单。这个类应该被所有其他页面对象扩展。

        除此之外,我建议您查看this 的答案。它展示了如何包装 RemoteWebDriver 以使其更加健壮,这将有助于实现 UI 测试。

        【讨论】:

          猜你喜欢
          • 2012-04-01
          • 1970-01-01
          • 2019-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-02
          • 1970-01-01
          • 2011-04-11
          相关资源
          最近更新 更多