Geb 测试框架——获取原始页面内容

Geb Test Framework -- get raw page content

有没有办法使用 Geb 获取原始页面内容?

例如,下面的测试应该可以工作(但是 PhantomJS 似乎对 JSON 响应和 HTML 代码有问题):

def "Get page content example -- health check"() {
        given:
        go "https://status.github.com/api/status.json"

        expect:
        assert driver.pageSource.startsWith('{"status":"(good)"')
    }

请注意,是的,我知道我不能使用 Geb,而只是在 Groovy 中调用 URL,但出于多种原因,我想明确使用 Geb (原因之一是处理重定向)。

Web 浏览器加载 URL 时呈现的内容取决于浏览器本身,您无能为力。 PhantomJS 使用与 Chrome 相同的引擎,因此它们两个在 JSON 周围渲染了一些 HTML。顺便说一下,IE、Edge 和 Firefox 也是这样做的。 HtmlUnit 换了一个纯渲染的JSON。但是,如果您可以只使用正则表达式,为什么还要费心像 startsWith 这样的精确匹配呢?它更灵活:

expect:
driver.pageSource =~ /"status":"good"/

这应该适用于所有浏览器引擎。

P.S.: then:expect: 块中不需要 assert,这就是 Spock/Geb.[=15= 的美妙之处]