首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页面对象模型中的缺陷?

页面对象模型中的缺陷?
EN

Stack Exchange QA用户
提问于 2019-04-17 02:33:17
回答 3查看 1.2K关注 0票数 3

我读过这篇关于Page /POM缺陷的文章,作者是ThoughtWorks - https://blog.getgauge.io/are-page-objects-anti-pattern-21b6e337880f的一位女士。

她说POM会导致过多的代码和可维护性问题。例如,她违背了关于Page Objects/POs应该返回其他POs的一般建议--参见标题“方法链接”下的内容。

这些论点是否合理?POM有什么真正的缺陷吗?

EN

回答 3

Stack Exchange QA用户

回答已采纳

发布于 2019-04-17 10:36:07

我认为,如果你坚持简单的马丁·福勒描述的网页,它是好的。它应该是一个简单的抽象,以保持您的测试代码干的,可重用,并通过使用描述页面/视图行为的页面方法来增加可读性。

链接的文章主要是关于页面工厂的问题,并且认为PageObjects必须返回另一个页面(它们不是,但有时非常方便!)就我个人而言,我从未见过PageFactories的用途,他们做的是我不需要的魔术,冗长的,等等。我也不认为需要一个额外的步骤层,建议的规范添加。对我来说,这是类似的开销,也带来了其他的痛苦。

只要保持简单,并且只在你需要的时候增加复杂性。

票数 5
EN

Stack Exchange QA用户

发布于 2019-04-17 10:01:16

我不会详细讨论页面对象的问题,网上有很多文章是由那些投入比我更多思想的人写的。不过,根据我的经验,我会用https://johnfergusonsmart.com/beyond-page-objects-liberate-chains-ui-think/的话说:页面对象很好,但是另一个抽象级别像剧本模式一样有帮助。

简而言之:是的,论点是合理的,也有缺陷。页面对象仍然有其存在的理由来学习,并作为更好的模型的垫脚石。

票数 4
EN

Stack Exchange QA用户

发布于 2019-04-17 11:57:53

结论是

她说POM会导致过多的代码和可维护性问题。

是错的。

页面对象是一个可以通过多种方式实现的概念。

它们解决了两个简单的问题:

  • 他们减少复制干燥通常是好的
  • 他们把命名为计算机科学中的两个难题之一

它们减少了可维护性问题--与您列出的要点之一完全相反。

我认为一个简单的例子可以说明这两个方面:

我将使用伪码。

没有页面对象

代码语言:javascript
复制
find ('div#main_content input#name').click   #for focus
fill_in('div#main_content input#name'), with: 'Bob'
expect(find('div#main_content input#name')).to have_Value 'Bob'

使用Page对象

代码语言:javascript
复制
name = div#main_content input#name # probably done in a setup file

find(name).click
fill_in(name), with: 'Bob'
expect(find(name)).to have_value 'Bob'

对我来说,第二条似乎更易读懂。

此外,如果定位器更改,则两者都需要更改,但在第二种情况下,此更改仅位于一个位置,而在第一种情况下,需要更新3个不同位置的定位器。

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

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

复制
相关文章

相似问题

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