有人可以概述一下我的页面对象模型吗?
我目前在Web服务领域担任QE
#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'
将这些定义存储在一个地方,并将其包含在测试规范中,这样,在页面显示时该规范就无需更改。
评论
您可以在我对此帖子的回答中找到其他信息:sqa.stackexchange.com/questions/3798/…这样可以很好地了解以下主题:code.google.com/p/selenium/wiki/PageObjects。另外,在线上也有很多关于该主题的文章,所以您要寻找的是什么具体的东西,或者只是人们观点的一个大致概念?