我正在使用Geb和Spock一起测试前端应用程序。我对这两种工具都很陌生。我有一个扩展GebReportingSpec的Spock规范。Spock非初始特征方法在整个运行类时失败
然后我有一个setupSpec登录到应用程序并导航到特定页面。随后是在网页上执行操作的各种功能方法(例如,单击下拉菜单然后选择一个选项)。
所有要素方法在成功运行时都会成功传递。第一个特征方法简单地从下拉列表中选择一个值,并声明适当的字段显示为结果(选定的选项控制哪些字段显示在页面上)。第二个要素方法无法从下拉列表中选择不同的选项,因此该方法的断言失败,因为它找不到字段。该选项被选中的更新事件没有被触发。我的规格是低于:
class VerifyFields extends GebReportingSpec {
def setupSpec() {
// Log in
via Dashboard
loginForm.login("marco", "abc123")
// Navigate to Page 1
button1.click()
button2.click()
// Click Button 3
button3.click()
}
// This feature method passes successfully
def "Verify Member fields exist"() {
when: "User selects Member option for drop down 1"
at Page1
projSubject.click()
projCoverMbrFields.projSubjectMbrOption.click()
sleep(1500)
then: "All expected member fields are displayed in the left panel"
assert mbrName.present
}
// This feature method fails when run after the first feature method
def "Verify Provider fields exist"() {
when: "User selects Provider option for subject type"
at Page1
projSubject.click()
projCoverProvFields.projSubjectProvOption.click()
sleep(1500)
then: "All expected provider fields are displayed in the left panel"
assert provName.present
}
我已经尝试添加的东西让页面专注于像下面的线条元素:
driver.findElement(By.className("projSubject")).click()
driver.findElement(By.cssSelector(".projSubjectoption[value='Provider']")).click()
并改变属性来选择=“选择”与下面的几行:
$("select.projSubject option[value='Provider']").jquery.attr("selected", true)
projCoverProvFields.projSubjectProvOption.jquery.attr('selected', 'selected')
但没有什么我可以解决其中第二特征的方法未能成功触发下拉选择更新页面上的字段的问题。
将@Stepwise spock属性添加到我的类的顶部解决了问题!非常感谢,我花了数小时试图解决这个问题! –
没问题 - 很高兴帮助:) – Rushby