最简单的 Geb 示例失败断言

Simplest Geb example fail assert

我刚刚开始阅读和尝试一些 Geb 0.12.2 示例及其文档 (http://www.gebish.org/manual/current),需要帮助才能理解这些断言失败的原因。 我的第一次尝试是使用重定向到我们的 IDP 登录的 Web 应用程序,如果登录成功,则将您重定向到私有 Web 应用程序内容。 我在这个例子中一直失败并决定尝试最简单的例子(我也使用 Spok,用于重用的登录模块和规范定义)我可以做以更好地理解正在发生的事情(我也是 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

只有第一个断言为真,即 built-in title 属性。根据文档 http://www.gebish.org/manual/current/#at-checker 有几种方法可以检索标题的值,但我似乎使用不正确。

使用 chromeTest、firefoxTest 或 phantomJS 或 运行 来自 IntelliJ 或 gradlew 通过命令行同样失败)。 我有 re-readed 一些文档部分,但我读得越多,我理解的就越少。

我误解或遗漏了什么?

谢谢。

您只能通过 Page class 的 title 属性 获取标题的值,您在 //1 中这样做。您不能使用 $() select 或 select <title> 元素,这是 WebDriver 的限制 - 这就是 WebDriver.getTitle()Page.getTitle() 委托的原因到它(根据它是 javadoc)。

能否请您指出 http://www.gebish.org/manual/current/#at-checker 的哪一部分让您相信有几种方法可以获得标题?我个人认为该部分没有做出这样的声明,但如果有,那么我们应该修复它。