【发布时间】:2016-11-18 17:23:01
【问题描述】:
我遇到了标准页面对象设计是一维的情况。这些页面非常大,包含许多(大部分是唯一的)页面部分。
现有的页面对象语料库如下所示:
this.pageHeaderLogin = $$('div.header > a.login');
this.pageHeaderSignUp = $$('div.header > a.signup');
this.pageHeaderContact = $$('div.header > a.contact');
this.pageIntroSectionTitle = $$('div.intro > span.title');
this.pageIntroSectionText = $$('div.intro > span.description');
以此类推,有多达 50-100 个元素,this 的所有直接子级。
在我看来,更好的结构不是一维的,而是类似于页面本身的结构的划分。所以我更喜欢做一个页面对象,比如:
this.pageHeader.login = $$('div.header > a.login');
this.pageHeader.signUp = $$('div.header > a.signup');
...
this.pageIntroSection.title = $$('div.intro > span.title');
等等。
不幸的是,有人告诉我这太复杂了。我想提出一个论点,它不仅不复杂,而且实际上更有条理,但是页面对象的所有示例都太小,无法说明一维结构之外的任何内容。
谁能给我指出一个非一维页面对象的好例子,我可以用作参考来展示这种设计的好处?
【问题讨论】:
标签: selenium selenium-webdriver webdriver protractor qa