2017-02-25 43 views
0

有沒有辦法使用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)"') 
    } 

需要注意的是,是的,我明白,我可以不要用蓋布,並且只是簡單地做Groovy中的URL調用,但出於多種原因,我想明確使用Geb(其中一個原因是處理重定向)。

+0

我能想到的最好的事情是$('pre').text()...但它似乎凌亂。 – vicsz

回答

5

Web瀏覽器在加載URL時呈現的內容取決於瀏覽器本身,因此您無能爲力。 PhantomJS使用與Chrome相同的引擎,因此它們兩個都圍繞JSON呈現一些HTML。順便說一下,IE,Edge和Firefox也是如此。用於更改的HtmlUnit呈現純JSON。但是,如果您只能使用正則表達式,爲什麼還要像startsWith這樣的精確匹配呢?它更靈活:

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

這應該適用於所有瀏覽器引擎。

P.S .:你不需要assertthen:expect:塊,這就是Spock/Geb的美。

+0

P.P.S.沒有必要...... :) – erdi

+0

你是對的@erdi。我有我的理由,但仍然是多餘的。我刪除它。 – kriegaex

+0

順便說一句,就像更清潔的正則表達式解決方案! – vicsz