为动态内容页面类型创建页面对象

时间:2015-04-13 20:26:58

标签: pageobjects

我想为具有动态部分的页面编写页面对象,该部分在按钮单击时切换。由于视图不同,逻辑上有三个部分,其中一次只能看到一个部分。

<Div id=view1/> or
<Div id=view2/> or
<Div id=view3/>


MyPage < SitePrism::Page 
    [Other elements and sections]
    [Dynamic section or element]
End

我想过以几种方式编写页面对象。

1)为每个可以处理的视图创建3个页面对象。这不可扩展,因为视图数量可能会增加。此类动态部分的数量也可以指数地增加不同页面对象的总数。那就是:

MyPage1,其中section指向view1。对于视图2和3来说同样明智。

2)在同一个对象中包含所有部分。这工作正常,但页面对象看起来不直观。

MyPage < SitePrism::Page
    Section :view1, Section::View1, "#view1"
    Section :view2, Section::View2, "#view2"
    Section :view3, Section::View3, "#view3" 
End

3)定义在运行时创建节的方法。这样我的页面在加载时没有该部分,但是一旦加载了thr页面,我调用适当的方法来加载页面中的部分。 (这没有实现,但我认为它可能会起作用,虽然它会在页面对象中需要尽可能多的方法作为此类动态部分的数量)

样品:

MyPage < SitePrism::Page
    Def self.createView(type)
        If type == view1
            Section :view1, Section::View1, "#view1"
        Elsif type == view2
            (Like above for view 2)
        Else
            (Like above for view 3)
        End
    End
End

如果您遇到类似的问题,我很想知道是否有其他方法可以采取,或者如果您预见到第三种方法有任何问题,请告诉我。

0 个答案:

没有答案