2013-12-17 22 views
0

我猜这是由于geb实现导致的一个常规问题,但我想知道是否有任何方法让智能感知与geb页面对象一起工作。我也是Java/Groovy(过去主要是C#开发)的新手,所以可能会有一些我不太理解的东西。我使用Intellij,但如果有任何IDE可以给我我想要的东西,我会很高兴。是否有可能让智能感知与Geb页面对象一起工作?

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

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

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

对于我们的商店来说,这几乎成了一件难事,但在我们放弃之前,我想看看Geb或Groovy的专家是否可以提供一些关于如何让智能感知工作的建议,或者可以给我们一个指示甚至有可能。

编辑:我在geb文档中发现了强大的打字和IDE支持,看起来很有前途:http://www.gebish.org/manual/current/ide-and-typing.html#ide_support然而,提供的例子失败。我直接从下面创业板文档粘贴的例子,有评论表示在/失败的原因:

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() 

回答