我正在尝试重复使用我在另一个Geb Spec中编写的Geb Spec测试,因此我不需要重新编写代码。我总是需要不同页面的产品编号,所以我想做类似以下的事情;
class BasePageGebSpec extends GebReportingSpec {
def firstProductOnBrowsePage(){
when:
to BrowsePage
then:
waitFor { BrowsePage }
productId { $("meta", 0, itemprop: "mpn").@content }
return productID // ???
}
}
在另一个GebSpec中,我希望使用上面的firstProductOnBrowsePage
,如下所示:
class ProductDetailsPageGebSpec extends BasePageGebSpec {
def "See first products details page"(){
when:
to ProductDetailsPage, productId: firstProductOnBrowsePage()
then:
waitFor { $("h2", class:"title").size() != 0 }
assert true
}
}
任何帮助将不胜感激,
谢谢!
答案 0 :(得分:0)
使用traits,你几乎可以得到你想要的东西(但测试不能在特质中工作)。您还可以考虑创建一个spec类来测试您拥有的每个页面的产品编号,然后不必担心在每个页面的spec类中测试此功能。
trait BasePageGebSpec extends GebReportingSpec {
def testingFirstBrowse() {
waitFor { BrowsePage }
productId { $("meta", 0, itemprop: "mpn").@content }
return productID
}
}
class ProductDetailsPageGebSpec implements BasePageGebSpec {
def firstProductOnBrowsePage(){
when:
to BrowsePage
then:
testingFirstBrowse()
}
}
答案 1 :(得分:0)
在BrowsePage
上添加productId作为内容:
class BrowsePage extends Page {
static content = {
productId { $("meta", 0, itemprop: "mpn").@content }
}
}
然后在您的规范中使用它:
class ProductDetailsPageGebSpec extends BasePageGebSpec {
def "See first products details page"(){
when:
to ProductDetailsPage, productId: to(BrowsePage).productId
then:
waitFor { $("h2", class:"title").size() != 0 }
}
}