最简单的Geb示例失败断言

时间:2015-11-06 12:34:01

标签: java intellij-idea geb

我刚开始阅读并尝试了一些Geb 0.12.2示例及其文档(http://www.gebish.org/manual/current),需要帮助才能理解这些断言失败的原因。 我的第一次尝试是使用重定向到我们的IDP登录的webapp,如果它成功登录,则将您重定向到私有webapp内容。 我已经失败了这个例子,并决定尝试最简单的例子(我也使用Spok,登录模块进行重用和Spec定义)我可以做的更好地了解发生了什么(我' m也是一个Eclipse用户,我已经为这种情况切换到IntelliJ。)

断言2和3失败,因为空值与我预期的标题进行比较:

package pages

import geb.Browser
import geb.Page

class GooglePage extends Page {
    static url = "http://www.google.com/"

    static content = {
        heading { $("title").text() }
    }

    static at = {
        title == "Google"             //1
        $('title').text() == "Google" //2
        heading == "Google"           //3
    }
}

Browser.drive{
    to GooglePage
}

输出// 2断言失败:

Caught: Assertion failed: 

$('title').text() == "Google"
       |          |      |
       |          ""     false
       [[[FirefoxDriver: firefox on WINDOWS (2c4f1f19-b4fc-4f1f-bb39-9e0e2459da58)] -> css selector: title]]

输出// 3断言失败:

Caught: Assertion failed: 

heading == "Google"           //3
|       |
""      false

只有第一个断言是真的,那就是内置的title属性。根据文档http://www.gebish.org/manual/current/#at-checker,有几种方法可以检索标题的值,但似乎我没有错误地使用它。

使用chromeTest,firefoxTest或phantomJS或通过命令行从IntelliJ或gradlew运行时失败。 我重新阅读了一些文档部分,但是我读的越多,我理解的就越少。

我错过了什么或者错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您只能通过title类的Page属性获取标题的值,您可以在//1中进行操作。您无法使用<title>选择器选择$()元素,这是WebDriver的限制 - 这就是WebDriver.getTitle()存在且Page.getTitle()委托给它的原因(根据它{{3 }})。

你能否指出我javadoc的哪一部分让你相信有几种获得头衔的方式?我个人并不认为该部分提出这样的陈述,但如果确实如此,我们应该修复它。