页面对象模型(POM)是一种设计模式,用于维护web元素的对象存储库。所有web元素及其对应的方法都在每个web页面的单独类中进行维护。因此,即使一个WebElement属性变化也会反映在所有的测试用例中,不管它在哪里被使用。这样,就很容易维护对象存储库。页面对象模型最好用于具有多个页面或状态的应用程序。
POM的优势
以下是在框架中使用POM的优点:
- 维护代码更容易,一次修改,任意引用的代码将会自动修改
- 增强代码的健壮性和可读性
- 减少代码的重复使用
- 代码变得更少,更优化
如何创建POM
- 为应用程序中的每个页面创建一个单独的类
- 在每个类中,将所有Web元素声明为变量
- 在页面类实现相应的方法
设计模式可以使用2层进行结构化:
- 页面层:将应用程序的页面作为单个类保存,每个类都将WebElements声明为变量,并将操作作为方法执行
- 测试层:将保存应用程序及其验证部分的测试用例
下面的演示代码中,测试了如下的一个简单场景:
- 打开浏览器,访问应用程序的URL
- 输入用户名和密码
- 单击登录按钮
- 验证主页上的成功登录消息
页面层
演示的场景,经过分析有两个页面类:
- LoginPage:当输入URL后,该页面打开,这是登陆界面
- HomePage:成功登录后显示的页面
对于每个页面,我们可以操作以下页面控件:
- 登录页上的用户名、密码、登录按钮字段
- 主页中的成功消息
对页面控件可以执行以下操作:
- 在用户名上进行输入操作
- 在密码字段上进行输入操作
- 单击登录按钮上进行点击操作。
演示代码如下所示:
LoginPage
Copy to Clipboard
HomePage
Copy to Clipboard
测试层
创建测试用例的步骤:
- 初始化驱动程序并打开应用程序
- 创建PageLayer类的对象(对于每个网页)并将驱动程序实例作为参数传递
- 使用创建的对象,调用PageLayer类中的方法(对于每个网页)以执行操作/验证
- 重复步骤3,直到执行所有操作,然后关闭驱动器
Copy to Clipboard
结论
页面对象模型是Selenium自动化框架中使用的设计概念、模式。编码者可以为页面、对象、操作定义见名知意的名称,使POM中的代码易于理解、重用和维护。在POM中,如果web元素中有任何更改,则只需在其各自的类中进行更改,而不必修改所有的类。
如果您对POM和Selenium的最佳实践有任何疑问,请联系我们。