页面对象模型
页面对象模型是一种模式,我们编写面向对象的类,作为特定网页视图的接口。我们使用该页面类的方法来执行所需的操作。几年前,我们直接在测试类中操作网页的 HTML 代码,这很难维护,而且 UI 的变化也很脆弱。
但是,以页面对象模式的方式组织代码可以提供特定于应用程序的 API,允许你在不浏览 HTML 的情况下操作页面元素。基本的 Rue of thumb 说,你的页面对象应该包含人类在该网页上可以做的所有事情。例如,要访问网页上的文本字段,你应该在那里获取文本并在执行所有修改后返回字符串。
在设计页面对象时,你应该记住以下几点:
-
页面对象通常不应仅针对页面构建,但你应该更喜欢为页面的重要元素构建它。例如,具有多个选项卡以显示学术界的不同图表的页面应具有与选项卡计数相同的页数。
-
从一个视图导航到另一个视图应该返回页面类的实例。
-
仅针对特定视图或网页所需的实用方法应仅属于该页面类。
-
断言方法不应该由页面类来处理,你可以有方法返回布尔值,但不要在那里验证它们。例如,要验证用户全名,可以使用方法获取布尔值:
public boolean hasDisplayedUserFullName (String userFullName) { return driver.findElement(By.xpath("xpathExpressionUsingFullName")).isDisplayed(); }
-
如果你的网页基于 iframe,则也希望拥有 iframe 的网页类。
页面对象模式的优点:
- 清除测试代码和页面代码之间的分离
- 如果网页的 UI 发生任何变化,则无需在多个位置更改代码。仅在页面类中进行更改。
- 没有分散的元素定位器。
- 使代码更容易理解
- 易于维护