如何检查您是否已登陆 Geb 中的多个页面之一

How to check you have landed on one of several pages in Geb

我是 Groovy 的新手,正在使用 Geb/Cucumber.

测试具有相当复杂工作流程的网站

我有一组产品页面,由页面 classes Prod1Page、Prod2Page 和 Prod3Page 表示。它们具有某些可以通过相同代码测试的特征。

我想按照以下行编写 ProductPage 页面 class:

class ProductPage extends Page {
    ...
    static at = {...}
    ...
}

这样

Given(~/.../) {
    ...
    at ProductPage
    ...
}

如果满足以下任一条件,则通过:

at Prod1Page
at Prod2Page
at Prod3Page

如果不清楚,我的目标是避免在其他地方重复 Prod[1-3]Page classes 的详细信息。

感谢您的任何见解,

尼克

ProductPage 的检查器中,只需断言所有 Prod#Page 之间的公共 HTML 元素可用。例如,如果所有 ProdPages 都有一个 <div id="productContainer"> 元素,那么您可以将以下内容放入 ProductPage class:

class ProductPage extends Page{

static at = { $("#productContainer").displayed }

...
}

现在在您的测试中,您可以调用 at ProductPage,如果该公共元素当前在 WebDriver 的 DOM 上可用,它将断言为真;你会知道你在 ProdPages 之一。