2016-05-20 8 views
1

Geb 0.13.1を使用しています。私はそれをあらゆる種類のテストフレームワーク(まだ)と統合しようとしているわけではなく、DSLのための感触を得ようとしています。私はこれを実行するとGeb EmptyNavigatorがありません

class GoogleHomepage extends Page { 
    static url = 'http://google.com' 

    static at = { 
     title == 'Google' 
    } 

    static content = { 
     search { 
      $('input#q') 
     } 
    } 
} 

class MyGebDriver { 
    static void main(String[] args) { 
     FirefoxDriver firefoxDriver = new FirefoxDriver() 
     Browser browser = new Browser(driver: firefoxDriver) 

     Browser.drive(browser) { 
      to(GoogleHomepage) 

      search.value('gmail') 

      quit() 
     } 
    } 
} 

、Firefoxの:私はちょうどゲブは、Firefoxブラウザを起動し、Googleのホームページにそれを指し、検索アドレス(「q」のidを持つHTML <input/>)でのGmail」を入力したいです開き、Googleになりますが、値を設定するための検索(「q」要素)バー見つけたときにチョークようだ:ここで何が起こっているかのよう

Exception in thread "main" geb.error.RequiredPageContentNotPresent: The required page 
    content 'sandbox.geb.GoogleHomepage -> search: geb.navigator.EmptyNavigator' is not 
    present 

任意のアイデア?

答えて

2

あなたは代わりに( '入力[名前= Q]')$を試してみてくださいEmptyNavigatorを取得しています。

1

あなたのGoogleHomepageはちょっと私にうっしく見えます。 これをgeb dslによく似たように見せたらどうなりますか?あなたはq個の$( '入力#のQ')のidを持つ入力を探しているので

class GoogleHomepage extends Page { 

    url = 'http://google.com' 

    static at = { 
     waitFor() { 
      title == 'Google' 
      content 
     } 
    } 

    static content = { 
     search(required: true) { $('input#lst-ib') } 
    } 
} 
+0

ありがとう@zypherman(+1) - ただし、変更しても、同じ正確な例外が発生します。 – smeeb

+0

上記のDeonが正しいかのように見えます。 GoogleのホームページでDOMを見ると、検索入力のIDがqではないことがわかります。 idは実際には 'lst-ib'です。名前= qを使用する場合は、上記のセレクタを使用します。そうでなければ、$( "input#lst-ib")を使うことができます。 – zypherman

+0

適切なIDを含むように上記の例を更新し、atチェッカーの方法を少し改善しました。 Gebにページが読み込まれるのを待つように指示すること、そしてあなたが必要とするすべての要素を提示することが重要です。そうしないと、完全にレンダリングされていないDOMと対話しようとします。 – zypherman

関連する問題