3

私は春のセキュリティ プラグインで保護された grails アプリケーションを持っています。何が問題なのか誰にも分かりますか?

これは私の LoginPage.groovy です

package pages.login

import geb.Page


class LoginPage extends Page {
    static url = "login/auth"

    static at = {
        title ==~ /Login/
    }

    static content = {
        loginForm { $("form") }
        username { $("input", type:"text", name:"j_username") }
        password { $("input", type:"password", name:"j_password") }
        loginButton{ $("input", type:"submit", value:"Login") }
    }
}

そして、これはjunit4を使用したテストです:

import geb.junit4.GebReportingTest

import pages.copyright.*
import pages.login.LoginPage
import org.junit.Test

class CopyrightCRUDTests extends GebReportingTest {

    @Test
    void doSomeCrud() {

        to LoginPage
        at LoginPage
        $("form").j_username() << "admin"
        $("form").j_password() << "XXXXX"
        loginButton.click()

        to AuthenticatedPage
        at AuthenticatedPage

    }
}

AuthenticatedPage は認証が必要なページですが、現時点では geb を使用して認証することはできません。この問題について何か知っている人はいますか?

前もって感謝します!

4

2 に答える 2

0

doSomeCrud()次のように書き直してみてください。

to LoginPage
loginForm.j_username = 'admin'
loginForm.j_password = 'XXXXX'
loginButton.click()
waitFor { at AuthenticatedPage }
于 2013-01-23T08:44:39.413 に答える
0

あなたは Spock を使用していないので、これが役立つかどうかはわかりませんが、ログインに関してもいくつか問題がありました (正確には覚えていませんが)。

最終的に、GebSpec を拡張する仕様に入れているこのコードを見つけました。

これは、ログインを必要とする各テストの前に呼び出されます。

  def setupSpec() {
    Browser.drive {
      go baseUrl
        $("form.login").with {
          username = System.getenv("APP_USERNAME")
          password = System.getenv("APP_PASSWORD")
        }
        $("input[name='submit']").click()
      }
  }

大したことではないように思えますが、フォームで「with」を使用するとうまくいきました。

于 2013-11-28T05:25:09.690 に答える