Java 将页面对象模型与页面Fatcory结合使用的最佳方法是什么
我目前有一项任务被分配到用Java创建一个自动化框架,并且我与架构师就测试设计进行了争论。下面是我当前的框架,即Maven、POM和PageFactory 项目Java 将页面对象模型与页面Fatcory结合使用的最佳方法是什么,java,maven,selenium,frameworks,Java,Maven,Selenium,Frameworks,我目前有一项任务被分配到用Java创建一个自动化框架,并且我与架构师就测试设计进行了争论。下面是我当前的框架,即Maven、POM和PageFactory 项目 -实用程序包-包含所有实用程序类 -定位器-仅包含网站的WebElements(页面工厂) -操作-包含定位器的单击、发送键和其他操作 -步骤-调用和断言操作类方法(步骤定义) -自定义侦听器-侦听器类 架构师建议我删除actions类并在locator类本身中添加所有操作,这将避免为每个locator类创建额外的类。但我想的是,随着项
-实用程序包-包含所有实用程序类
-定位器-仅包含网站的WebElements(页面工厂)
-操作-包含定位器的单击、发送键和其他操作
-步骤-调用和断言操作类方法(步骤定义)
-自定义侦听器-侦听器类
架构师建议我删除actions类并在locator类本身中添加所有操作,这将避免为每个locator类创建额外的类。但我想的是,随着项目的扩大,这看起来会更混乱。所以我尝试将定位器作为一个不同的类进行分离,并在不同的类中对其进行操作。所以想问一下什么是最好的方法,在locator类中添加操作还是分离?是的,您的方法更好。所有常用操作都应该在一个类下,每个页面对象类都应该扩展它。通过这样做,这将使您的测试更加健壮,并防止页面类受到驱动程序实现细节的污染。尽管这是一个自以为是的问题,但我建议使用软件架构师的方法并删除操作类。我不确定Step类的目的是什么,所以我也会删除它们
- 计划
- 公用事业
- 页面对象
- 自定义侦听器
- 网络驱动程序
除此之外,我建议大家看看答案。它展示了如何包装RemoteWebDriver,使其更加健壮,这将有助于实现UI测试。页面对象模型,您可以将所有web定位器分配到单个文件中。根据您定义的不同场景、不同网页或自定义实用程序(如果有),应该有不同的类 您可以通过两种方法使用页面对象模型:- -简单的定义:(有很多条款,在这些条款中,您可以实现这些事情,而无需引用WebElement,并且直接通过引用使用。因此,根本不需要在WebElement上赋值。) -使用页面工厂:(从上面看执行速度更快)
By demo_get_text=By.className("xyz");
@FindBy(className="xyz") WebElement demo_get_text;