页面对象模型(POM)是一种设计模式,用于维护web元素的对象存储库。所有web元素及其对应的方法都在每个web页面的单独类中进行维护。因此,即使一个WebElement属性变化也会反映在所有的测试用例中,不管它在哪里被使用。这样,就很容易维护对象存储库。页面对象模型最好用于具有多个页面或状态的应用程序。

POM的优势

以下是在框架中使用POM的优点:

  1. 维护代码更容易,一次修改,任意引用的代码将会自动修改
  2. 增强代码的健壮性和可读性
  3. 减少代码的重复使用
  4. 代码变得更少,更优化

如何创建POM

  1. 为应用程序中的每个页面创建一个单独的类
  2. 在每个类中,将所有Web元素声明为变量
  3. 在页面类实现相应的方法

设计模式可以使用2层进行结构化:

  • 页面层:将应用程序的页面作为单个类保存,每个类都将WebElements声明为变量,并将操作作为方法执行
  • 测试层:将保存应用程序及其验证部分的测试用例

下面的演示代码中,测试了如下的一个简单场景:

  1. 打开浏览器,访问应用程序的URL
  2. 输入用户名和密码
  3. 单击登录按钮
  4. 验证主页上的成功登录消息

页面层

演示的场景,经过分析有两个页面类:

  • LoginPage:当输入URL后,该页面打开,这是登陆界面
  • HomePage:成功登录后显示的页面

对于每个页面,我们可以操作以下页面控件:

  • 登录页上的用户名、密码、登录按钮字段
  • 主页中的成功消息

对页面控件可以执行以下操作:

  • 在用户名上进行输入操作
  • 在密码字段上进行输入操作
  • 单击登录按钮上进行点击操作。

演示代码如下所示:

LoginPage

Copy to Clipboard

HomePage

Copy to Clipboard

测试层

创建测试用例的步骤:

  1. 初始化驱动程序并打开应用程序
  2. 创建PageLayer类的对象(对于每个网页)并将驱动程序实例作为参数传递
  3. 使用创建的对象,调用PageLayer类中的方法(对于每个网页)以执行操作/验证
  4. 重复步骤3,直到执行所有操作,然后关闭驱动器
Copy to Clipboard

结论

页面对象模型是Selenium自动化框架中使用的设计概念、模式。编码者可以为页面、对象、操作定义见名知意的名称,使POM中的代码易于理解、重用和维护。在POM中,如果web元素中有任何更改,则只需在其各自的类中进行更改,而不必修改所有的类。

如果您对POM和Selenium的最佳实践有任何疑问,请联系我们。