2

私は次の設定をしています:

  • インストールされたJDK & JRE 6u29
  • インストールされたセレンスタンドアロン2.8
  • グルービー 1.8.3
  • ゲブ 0.6.1

GroovyConsole だけを使用して、Geb マニュアルに記載されている最初の例を実行しようとしました。

import geb.Browser

Browser.drive {
    go "http://google.com/ncr"

// make sure we actually got to the page
assert title == "Google"

// enter wikipedia into the search field
$("input", name: "q").value("wikipedia")

// wait for the change to results page to happen
// (google updates the page dynamically without a new request)
waitFor { title.endsWith("Google Search") }

// is the first link to wikipedia?
def firstLink = $("li.g", 0).find("a.l")
assert firstLink.text() == "Wikipedia"

// click the link 
firstLink.click()

// wait for Google's javascript to redirect to Wikipedia
waitFor { title == "Wikipedia" }
}

しかし、次のエラーが発生しています:

警告: スタックトレースのサニタイズ:

geb.waiting.WaitTimeoutException: 条件が 5.0 秒以内に渡されませんでした

例に何か問題がありますか?私は何か間違ったことをしていますか?非常に最初の例が実行されないことを考えると、これは非常に苛立たしいことです!

4

4 に答える 4

3

スクリプトはwikipedia検索ボックスに入力されていますが、検索を開始するGoogle Searchボタンを押していません。

追加する場合:

// hit the "Google Search" button

$("input", name: "btnG").click()

直後の

// enter wikipedia into the search field

$("input", name: "q").value("wikipedia")

あなたは少し遠くに行きます。

于 2011-10-27T16:34:52.817 に答える
2

この例では、Google の自動読み込み機能を利用しています。これにより、検索を入力すると検索結果が表示されるため、検索ボタンをクリックする必要はありません。テストを実行すると、検索結果が表示され、Wikipedia のリンクが最初に表示されるはずです。

あなたが取得している WaitTimeoutException は、ウィキペディアのページに到着した後、ブラウザーがあまりにも早く閉じられたことが原因である可能性が最も高いです。これを修正するには、waitFor 呼び出しを更新して、ブラウザーを閉じるまでの待ち時間を長くします。つまり、

waitFor(10) (at WikipediaPage)

または、gradle をデバッグ モードで実行すると、プロセスが大幅に遅くなるため、ブラウザが終了する前にテストでタイトルを確認できます。

gradlew firefoxTest --debug --stacktrace
于 2013-03-24T07:31:05.363 に答える