【发布时间】:2013-12-17 19:32:54
【问题描述】:
我猜这更多是由于 geb 实现而导致的一个 groovy 问题,但我想知道是否有任何方法可以让智能感知与 geb 页面对象一起工作。我也是 Java/Groovy 的新手(过去主要是 C# 开发),所以可能有些事情我不太了解。我正在使用 Intellij,但如果有任何 IDE 可以给我想要的东西,我会很高兴。
据我所知,Geb 的实现是他们有一个带有 Page 属性的浏览器类,并且在没有特定 Page 实例的上下文的情况下执行的任何方法或属性将在运行时触发 MissingMethod 或 MissingProperty 异常,这Geb 处理并重新路由到当前通过浏览器类中的页面属性设置的页面类中的相应方法或属性。
这对开发意味着,当我们创建测试用例时,IDE 不知道哪个页面实例是当前浏览器页面属性,因此没有智能感知。
我们尝试过创建页面实例并显式调用它们,并将页面类中的辅助函数设为静态,这两者都导致了其他问题。
对于我们的商店来说,这几乎是一个交易破坏者,但在我们放弃之前,我想看看是否有任何 Geb 或 Groovy 专家可以就如何让智能感知工作提供一些建议,或者可以告诉我们是否可以甚至是可能的。
编辑:我在 geb 文档中发现了一个关于强类型和 IDE 支持的部分,看起来很有希望:http://www.gebish.org/manual/current/ide-and-typing.html#ide_support 但是,提供的示例失败了。我直接从下面的 geb 文档中粘贴了示例,cmets 显示了失败的位置/原因:
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()
【问题讨论】: