Spock测试显示groovy.lang.MissingPropertyException

Spock测试显示groovy.lang.MissingPropertyException,groovy,spock,geb,Groovy,Spock,Geb,我有下面的斯波克测试。我首先进入登录页面,然后单击登录按钮而不输入电子邮件和密码来验证错误消息。我将添加其他步骤,如电子邮件,但没有密码和电子邮件与不正确的密码,但我首先需要让这个测试工作 package loginPageTests import Pages.loginPage import geb.Page import geb.spock.GebReportingSpec class invalidLoginSpec extends GebReportingSpec { de

我有下面的斯波克测试。我首先进入登录页面,然后单击登录按钮而不输入电子邮件和密码来验证错误消息。我将添加其他步骤,如电子邮件,但没有密码和电子邮件与不正确的密码,但我首先需要让这个测试工作

package loginPageTests

import Pages.loginPage
import geb.Page
import geb.spock.GebReportingSpec

class invalidLoginSpec extends GebReportingSpec {

    def "Go to login page"() {
        when:
        Page loginPage = to loginPage
        waitFor { loginPage.loginButton.isDisplayed() }

        then:
        at loginPage
    }

    def "Try to log in without email or password"() {
        when:
        loginPage.loginButton.click()

        then:
        at loginPage
        assert loginPage.loginError.text() == "Please enter your email and password."
    }
}
和下面的页面对象

package Pages

import geb.Page

class loginPage extends Page {
    static url = 'login/'
    static at = { title == "Login to TB"}
    static content = {
        loginButton {$("#loginButton")}
        loginError(wait:true) {$("#loginError")}
    }
}
第一个方法成功运行,但当第二个方法尝试运行时,我出现了此错误

groovy.lang.MissingPropertyException:没有这样的属性:loginButton 对于类:Pages.loginPage


属性loginButton位于loginPage页面对象中,因此我不确定为什么会发生此错误

您与页面交互的方式不是惯用的,但要回答所问的问题


您已将
loginPage
定义为第一个测试方法中的局部变量,然后尝试在第二个测试方法中引用超出范围的变量。

请对类使用普通驼峰格,例如
loginPage
invalidLoginpec
。您可能需要逐步查看
@以了解您要做的事情。