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

vic*_*csz 0 groovy geb phantomjs

有没有办法使用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)"')
    }
Run Code Online (Sandbox Code Playgroud)

请注意,是的,我明白我可以不使用Geb,只是在Groovy中进行URL调用,但由于多种原因我想明确使用Geb(其中一个原因是处理重定向).

kri*_*aex 6

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

expect:
driver.pageSource =~ /"status":"good"/
Run Code Online (Sandbox Code Playgroud)

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

PS:你不需要assertin then:expect:block,这就是Spock/Geb的美丽.