私はspockを使ってgebテストで基本的なログを書き込もうとしています。 2ページのオブジェクトを作成しました.1つはログインページ用、もう1つはログイン後に取得するページ用です。1つのGebテストで複数のページオブジェクトを使用する
ログインページ
package Pages
import geb.Page
class loginPage extends Page {
static url = 'login/'
static at = {title == "Login to TalentBank"}
static content = {
logo {$(".center-img img")}
emailHeader {$(".form-group label", text:"Email")}
emailTextBox {$('#email')}
pwdHeader {$(".form-group label", text:"Password")}
pwdTextBox {$("#password")}
loginButton {$("#loginButton")}
}
}
ホームページ
package Pages
import geb.Page
class homePage extends Page {
static at = {title == "Home"}
static content = {
tile1 {$("#page-container > div.container-fluid > div > div:nth-child(2) > div")}
}
}
TestSpec。これは、ログインページに移動し、ユーザーの資格情報を入力し、ログインボタンをクリックし、ホームページ上の要素を待ってから、ホームページにいることを確認するための基本的なテストです。
import Pages.loginPage
import Pages.homePage
import geb.spock.GebReportingSpec
class loginPageSpec extends GebReportingSpec {
def "Log in to TalentBank Core"(){
given:
to loginPage
waitFor {loginButton.isDisplayed()}
when:
emailTextBox.value("Ruxin")
pwdTextBox.value("Test1234")
loginButton.click()
then:
waitFor {tile1.isDisplayed()}
at homePage
}
}
私がテストを実行すると、私は以下のエラーが原因
取得:groovy.lang.MissingPropertyException:Pages.loginPage用コンテンツとして、または上のプロパティとして tile1を解決することができませんがその ナビゲータコンテキスト。 tile1はインポートするのを忘れたクラスですか?
homePageではなくloginPageでtile1を探しています。
私はこのテストはあなたの提案で動作するように取得することができませんよ。私はテストがすぐに失敗するのを見ている:ステップ。そのページが読み込まれるのを待つ前に、ホームページにあることを確認しようとします。私はホームページにいることを確認する前に待つ必要があります。私は、 "homepage.tile1.isDisplayed()}"をホームページのステップの上に移動しようとしましたが、 "No such property:tile1 for classes:Pages.homePage"のエラーで動作しません。 – TestRaptor
適切なタイトル(「ホーム」)を取得していますか?異なる要素、できればIDを持つ要素を試してみたら、それはうまくいくのでしょうか? – Royg
右のタイトルはHomeです。しかし、テストでは、実際のページが読み込まれる前にタイトルが「ホーム」と等しいことを確認しようとしていました。タイトルはまだ前のページから「ログイン」に等しいので、失敗していました。私は私のホームページのページオブジェクトにわずかな変更を加え、私の問題を解決したようです。 "static at = {title ==" Home "}の代わりに、" static at = {waitFor {title == "Home"}} " – TestRaptor