Geb Test Framework - 获取原始页面内容

时间:2017-02-25 15:02:15

标签: groovy phantomjs geb

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

例如,下面的测试应该有效(但是PhantomJS似乎对使用HTML代码的JSON响应不好):

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(其中一个原因是处理重定向)。

1 个答案:

答案 0 :(得分:5)

网页浏览器在加载网址时呈现的内容取决于浏览器本身,您无能为力。 PhantomJS使用与Chrome相同的引擎,因此其中两个引擎围绕JSON呈现一些HTML。顺便说一句,IE,Edge和Firefox都是这样做的。用于更改的HtmlUnit呈现纯JSON。但是,如果您只使用正则表达式,为什么还要使用startsWith之类的完全匹配呢?它更灵活:

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

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

P.S。:assertthen:块中不需要expect:,这就是Spock / Geb的美丽。