Java 将页面对象模型与页面Fatcory结合使用的最佳方法是什么

Java 将页面对象模型与页面Fatcory结合使用的最佳方法是什么,java,maven,selenium,frameworks,Java,Maven,Selenium,Frameworks,我目前有一项任务被分配到用Java创建一个自动化框架,并且我与架构师就测试设计进行了争论。下面是我当前的框架,即Maven、POM和PageFactory 项目 -实用程序包-包含所有实用程序类 -定位器-仅包含网站的WebElements(页面工厂) -操作-包含定位器的单击、发送键和其他操作 -步骤-调用和断言操作类方法(步骤定义) -自定义侦听器-侦听器类 架构师建议我删除actions类并在locator类本身中添加所有操作,这将避免为每个locator类创建额外的类。但我想的是,随着项

我目前有一项任务被分配到用Java创建一个自动化框架,并且我与架构师就测试设计进行了争论。下面是我当前的框架,即Maven、POM和PageFactory

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


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

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

尽管这是一个自以为是的问题,但我建议使用软件架构师的方法并删除操作类。我不确定Step类的目的是什么,所以我也会删除它们

  • 计划
    • 公用事业
    • 页面对象
    • 自定义侦听器
    • 网络驱动程序
您可以创建包含所有常用定位器和方法的BasePageObject,例如处理某些导航栏或菜单。然后,该类应该由所有其他页面对象扩展


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

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

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

-简单的定义:(有很多条款,在这些条款中,您可以实现这些事情,而无需引用WebElement,并且直接通过引用使用。因此,根本不需要在WebElement上赋值。)

-使用页面工厂:(从上面看执行速度更快)

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