有没有办法使用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(其中一个原因是处理重定向)。
答案 0 :(得分:5)
网页浏览器在加载网址时呈现的内容取决于浏览器本身,您无能为力。 PhantomJS使用与Chrome相同的引擎,因此其中两个引擎围绕JSON呈现一些HTML。顺便说一句,IE,Edge和Firefox都是这样做的。用于更改的HtmlUnit呈现纯JSON。但是,如果您只使用正则表达式,为什么还要使用startsWith
之类的完全匹配呢?它更灵活:
expect:
driver.pageSource =~ /"status":"good"/
这适用于所有浏览器引擎。
P.S。:assert
或then:
块中不需要expect:
,这就是Spock / Geb的美丽。