2017-02-25 6 views
0

Gebを使用して生のページコンテンツを取得する方法はありますか?次のテストは、動作するはずです(ただし、PhantomJSは、HTMLコードで悪いJSONレスポンスには思える)例えばGebテストフレームワーク - 生のページコンテンツを取得する

:YES私はちょうどゲブを使用しない、と単純に作ることができることを理解し、こと

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を明示的に使用したい理由の多く(理由の1つはリダイレクトを扱っています)です。

+0

私が考えることができる最高のものは$( 'pre')です。テキスト()...しかし、それは乱雑です。 – vicsz

答えて

5

URLを読み込むときにWebブラウザがレンダリングするものは、ブラウザ自体によって異なります。何もできません。 PhantomJSはChromeと同じエンジンを使用するため、2人はJSONの周りにHTMLを描画します。 IE、Edge、Firefoxは同じように機能します。 HtmlUnitを変更すると、純粋なJSONがレンダリングされます。しかし、なぜ正規表現を使うことができるのであれば、startsWithのような正確なマッチで気にする必要はありませんか?これははるかに柔軟です:

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

これはすべてのブラウザエンジンで動作するはずです。

P.S .: またはexpect:ブロックにassertのブロック、つまりSpock/Gebの美しさは必要ありません。

+0

そのP.P.S.必要なかった... :) – erdi

+0

あなたは正しい、@ erdi。私には理由がありましたが、まだそれは余分でした。私はそれを削除した。 – kriegaex

+0

Btw、クリーナーの正規表現のように! – vicsz

関連する問題