我已经听到很多有关页面对象建模的信息?为什么这么重要?

有人可以概述一下我的页面对象模型吗?

我目前在Web服务领域担任QE

评论

您可以在我对此帖子的回答中找到其他信息:sqa.stackexchange.com/questions/3798/…

这样可以很好地了解以下主题:code.google.com/p/selenium/wiki/PageObjects。另外,在线上也有很多关于该主题的文章,所以您要寻找的是什么具体的东西,或者只是人们观点的一个大致概念?

#1 楼

阅读此内容(虽然整个页面对我们来说还是不错,但向下滚动到页面对象部分)以及有关某些背景的内容

或从此页面中


基本,基本上我可以看到三个功能
页面对象模式提供了以下功能:

能够以一致的方式轻松实例化页面的功能

能够简洁地描述元素的能力页面,通过
使其保持干燥,避免重复元素标识符(使用底层的
驱动程序的API)

能够提供使用元素的更高级别方法的功能
执行面向用户的功能。


和此处的教程

#2 楼

您的问题提示了几个问题:

什么是页面对象?

页面对象是为在其中建模实际页面(或页面的一部分)而编写的代码Web应用程序。例如。应用中的每个页面都将具有一个关联的页面对象文件,该文件提供实际页面提供的“服务”。例如。如果您的应用程序页面上有一个按钮,则您的页面对象中将对该按钮有一个引用。如果随后编写单击该按钮的测试,则可以通过页面对象访问该按钮。

为什么使用页面对象?

页面对象具有许多优点,包括:


使测试更具可读性/易于理解
使测试更易于维护
帮助将代码组织成逻辑块

如何使用页面对象

我有一个在Sahi中使用的页面对象模式的示例,该示例在我的博客上用Javascript编写。它遍历了包含的有效源代码,这可能有助于巩固这一概念。

#3 楼

可以将“页面对象”方法视为为常用HTML页面指定名称并使用其名称。

例如,如果您以这种方式在三个位置识别按钮:

find('button#primary_driver_stage1')
...
click('button#primary_driver_stage1')
...
click('button#primary_driver_stage1')


现在存在三个问题:


很难阅读
它会重复一些可能更改的元素/属性
任何更新必须在3个地方完成。

Page Object方法通过为HTML DOM标识元素/属性提供名称来解决此问题,例如,

primary_driver_stage1='button#primary_driver_stage1'


然后在代码中使用它,例如,

find(primary_driver_stage1)
...
click(primary_driver_stage1)
...
click(primary_driver_stage1)


,当它需要更新为例如div而不是按钮时,您只需更新即可

primary_driver_stage1='div#primary_driver_stage1'


将这些定义存储在一个地方,并将其包含在测试规范中,这样,在页面显示时该规范就无需更改。