3

我有一个带有 spring 安全插件的安全 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 回答