初めてGebに挑戦2
"前回"での動作しない問題が、id:Kimukou_26さんのコメントで解決したので、テスト用に作成したweb画面のテストに挑戦。
しかし、、、ここでも思った結果にならない?
- テスト対象の画面
1.Hello画面
2.Greeting画面
Hello画面のnameテキストに値を入力して「greet」ボタンをクリック、h1タグに「Hello 」+name入力値を表示
この動作を以下のコードで実行するとnameテキストに指定した値が入力されないようで結果h1タグに「Hello」としか表示されない?
nameテキストのnameが「form1:name」と「:」があることが問題になっている?
JSFを使用して画面を作成するとform名+「:」+inputタグ名になるので、nameテキストのnameから「:」はとれない?
- Geb実装内容
@Grab("org.codehaus.geb:geb-core:latest.release") @Grab("org.seleniumhq.selenium:selenium-firefox-driver:latest.release") import geb.* class HelloPage extends Page { static url = 'http://localhost:8080/HelloSample/' static at = {title == 'Hello'} static content = { nameInput { $("input", name:"form1:name") // ★1ここの指定が間違っている? } greetingButton (to:GreetingPage){ $("input", value:"greet") } } } class GreetingPage extends Page { static at = {title == "Greeting"} static content = { h1Text {$('h1').text()} } } Configuration conf = new Configuration() //conf.setDriverConf('firefox') //conf.setReportsDir(new File('Users/tomo')) Browser.drive(){ to HelloPage assert at(HelloPage) nameInput = "JGGUG" // ★2ここで値を入力しているはずが? // report 'hello_page' greetingButton.click() assert at(GreetingPage) // report 'Greeting_page' assert h1Text == 'Hello' // assert h1Text == 'Hello JGGUG' // ★3入力されていない? }
コードは、my first Geb (for HelloSample) · GitHubにあります。
name問題意外にもG*Mag Japan3号Gebの記事で設定の仕組みでBrowser,screenShotの取得を試してみたが、Browserの指定でエラー発生
テストもspockで記述したいが、なかなか進まないし。
やっぱりまだまだ理解して使用していないので、問題が発生すると解決できないです(涙)
- 追記(id:kiy0takaさんのコメントの内容に修正、無事テスト成功しました!)