有可能让intellisense与Geb页面对象一起使用吗?

时间:2013-12-17 19:32:54

标签: groovy geb

由于geb实现,我猜这更像是一个常规问题,但我想知道是否有任何方法可以使用intellisense来处理geb页面对象。我也是Java / Groovy的新手(过去主要是C#开发)所以可能会有一些我不太了解的东西。我正在使用Intellij,但如果有任何IDE可以提供我想要的东西,我会很高兴。

据我所知,Geb的实现是他们有一个带有Page属性的Browser类,在没有特定Page实例的上下文的情况下执行的任何方法或属性都会在运行时触发MissingMethod或MissingProperty异常, Geb处理并重新路由到Page类中相应的方法或属性,该类当前通过浏览器类中的Page属性设置。

这对于开发意味着当我们创建测试用例时,IDE不知道哪个页面实例是当前的浏览器页面属性,因此没有智能感知。

我们尝试创建页面的实例并显式调用它们,并且还使页面类中的辅助函数变为静态,这两者都导致了其他问题。

对于我们的商店来说,这几乎是一个交易破坏者,但在我们放弃之前,我想看看是否有任何Geb或Groovy专家可以提供关于如何使intellisense工作的一些建议,或者可以告诉我们是否它甚至可能。

编辑:我在geb文档中找到了一个关于强类型和IDE支持的部分看起来很有希望:http://www.gebish.org/manual/current/ide-and-typing.html#ide_support但是,提供的示例失败了。我直接从下面的geb文档中粘贴了示例,其中的注释显示了失败的原因/原因:

HomePage homePage = browser.to HomePage //browser.to returns null, so this fails
homePage.loginButton.click()

LoginPage loginPage = browser.at LoginPage //browser.at returns boolean so this fails
SecurePage securePage = loginPage.login("user1", "password1")

//The only thing that I got to work, which seems messy is:
browser.to HomePage
HomePage homePage = browser.page
homePage.loginButton.click()

1 个答案:

答案 0 :(得分:0)

好的......所以,我有一个旧版本的Geb以某种方式被从我的gradle缓存中拉出来。解决该问题并实际使用Geb 0.9.2后,记录的用法正常工作:http://www.gebish.org/manual/current/ide-and-typing.html#ide_support