私はGEBとSpockを学ぼうとしているマニュアルテスターです。これらを学ぶには、JavaまたはGroovyの予備知識が必要ですか?私はGEBの本を読んでいますが、前提条件、本、または学習リソースは何ですか?助けてください。ありがとう。
1 に答える
Gebを手にしたときに非常に役立つと思ったいくつかの必需品といくつかの「良いもの」をコンパイルしてみました。
いくつかのグルーヴィーな魔法。Groovyを学ぶために必要なことのほとんどは、このマニュアルで説明されていますが、明らかな理由で、言語に夢中になっている場合は、GroovyinActionを検討することをお勧めします。Groovyを取得するためにJavaは必要ありませんが、Java(クロージャを除く)またはPythonのバックグラウンドを持っている場合は、おそらく15分間チュートリアルをざっと見て、すでにそこにいます)。
少しセレン。この1ページでは、一般的に使用するSeleniumWebdriverについて知っておく必要があることをすべて説明しています。しかし、強調するために、より良いです。
jQueryセレクター(誰もが簡単だと言っていますが、率直に言って、私は少なくとも1時間に2回マニュアルを参照しています。私はばかげているので…)。jQueryを初めて使用する場合は、基本的なセレクターから始めて、左側のナビゲーションメニューをクリックして詳細を確認することをお勧めします。すべてのjQueryセレクターがGebに適用できるわけではありませんが、Gebチュートリアルのセレクターセクションはそれほど網羅的で魅力的ではなかったことに注意してください。
テストケースの最後に、複数のテストケースにまたがる架空のレポートを生成する必要があり、テストケース間に依存関係がありました。そこで、Spockの代わりにTestNGを選びました。率直に言って、私はスポックに多くのチャンスを与えませんでした。
PageObjectsは実際にはGebの前提条件ではありませんが、PageObjectsは非常に優れているため、Gebの外部について考える必要はありません。PageObjectsは、実際のテストで処理する必要がないように、HTMLページの構造をオブジェクトにラップすることを示すかわいいパターンです。はぁ。つかまえた。それを平易な英語で言いましょう。
たとえば、IDが「nametext」の入力テキストボックスを含む登録フォームがあるとします。テキストボックスのハンドルをどのように取得しますか?DOM用語では、javascriptでは、
document.getElementById("nametext")
Seleniumでは、非常によく似た処理を実行します
driver.findElement(By.id("nametext"))
したがって、Jason
Seleniumのテキストボックスに入力する場合は、
driver.findElement(By.id("nametext")).sendKeys("Jason");
すべての入力フィールドに対してこれを行うと、すぐにテストケースが醜くて嫌になります。その代わりに、OO用語では、カプセル化します。あなたは新しいクラスを作成し、あなたのとを次のように言っRegistrationPage
てラップします:findElement
sendKeys
public class RegistrationPage{
…
public RegistrationPage fillRegistrationForm(String name, String email){
driver.findElement(By.id("nametext")).sendKeys(name);
driver.findElement(By.id("emailtext")).sendKeys(email);
}
}
そしてあなたのテストケースから、あなたは言うでしょう
RegistrationPage regPage=new RegistrationPage();
regPage.fillRegistrationForm("Jason","jason@bourne.com");
(さらに良いアイデアは、入力値をクラスにラップして、fillRegistrationFormに渡すことです)
実際、GebはPageObjectsをはるかに優れた方法で活用しています-jQueryセレクターが救いの手を差し伸べます
class InputFormPage extends Page{
…
static content={
name {$("input", id:"entry_0")}
emailAddress {$("input", id:"entry_1")}
}
}
そしてあなたのテストケースでは、あなたはただ言うでしょう
name.value ("Jason")
emailAddress.value ("jason@bourne.com")