首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否需要PageObjects设计模式?

我是否需要PageObjects设计模式?
EN

Stack Exchange QA用户
提问于 2012-06-21 22:06:18
回答 2查看 741关注 0票数 2

现在,我有一个Selenium WebDriver框架,它看起来像这样(非常简化):

  • \app_func.py -- app_func有该网络应用程序的“动作”,比如“保存新搜索”
  • \app_data.py -- app_data有常见的断言,例如,如果我重复使用一些测试数据,它将存储该数据的文档计数,这样我就可以在测试文件中断言count == app_data.big_zip_file。
  • \util.py -- util具有公共的、应用程序无关的函数,如wait_for_text。
  • \setup.cfg --安装程序包含所有服务器信息,等等。

然后我要做个测试

  • \tests\upload_big_zip --每个test.py文件导入app_func、app_data、util。

然后一个测试看起来是:

代码语言:javascript
复制
app_func.upload_data('big.zip')
app_func.save_a_search('search terms', app_data.big_search_hits)
app_func.verify_search_hits

因此,我得到了PageObjects模式的主要好处--比如,如果开发人员更改UI,就可以轻松地更新save_a_search。但这是一个比OO PageObjects更“平淡”的结构。我还不能把我的思想集中在这个模式上。

我有什么理由建立一个基于PageObjects的新结构吗?我要找的是,和我的方法相比有什么好处?

EN

回答 2

Stack Exchange QA用户

发布于 2012-06-22 00:05:44

有时使用Page对象模式很有意义,而有时却没有那么有意义。如果您有一个web应用程序,它基本上是一个动态页面,那么它就没有什么意义了,但是您仍然可以使用更像“节”对象的“页面”对象作为常见的部分,例如,如果您有一个左Nav,您可以为它创建一个页面对象,然后为一个日历部分或者页面上任何有意义的部分创建另一个页面对象。

从页面对象模式中获得的主要内容是

  1. 能够在一个位置识别页面上存在的元素和适用于该页面的辅助函数,因此更改只发生在一个地方,而不是所有的测试用例。
  2. 它充当Selenium之上的抽象层,因此如果selenium发生更改,您可以更新页面而不是每个测试用例。

您还可以在Selenium之上构建一个抽象层,并让页面对象与其交互,以进一步保护自己不受更改的影响。

如果AUT (正在测试的应用程序)的元素和AUT的助手函数存在于app_func中,并且它是一个足够简单的结构,那么您似乎遇到了页面对象模式没有那么有用的情况。这取决于你来决定它是否足够复杂,可以分成几个部分。

票数 5
EN

Stack Exchange QA用户

发布于 2012-06-22 02:48:11

这取决于您的站点是如何构建的。如果您的站点的页面遵循一些常见的模式,如果这些模式是有状态的,那么将页面建模为对象可能是有用的。否则,这可能是不值得的麻烦。

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/3330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档