Geb测试DOM元素存在然后在下一页加载时被删除

时间:2016-01-11 14:31:26

标签: gradle spock geb

我对Geb很新,但我面临一个奇怪的问题,即文档似乎没有解决。我有一个非常简单的测试方案:以管理员身份登录,打开应用程序,验证主页上是否显示“应用”按钮。然后关闭应用程序并验证该按钮是否已从主页中消失。我可以成功手动执行此测试,服务器端没有任何内容(缓存方式)阻止此操作成功但是当我通过Gradle运行测试时它会失败,因为“关闭”后主页上仍然显示按钮测试。请注意,测试还会验证配置是否以适当的值保存。

这是我的测试代码:

def "can open applications"(){
    when:
    to ManageConfigPage

    and:
    configFormModule.toggleApplications(true)

    then:
    at ManageConfigPage
    assert $('#messages').text() == "Config successfully updated"
    assert $('td', text: 'config.application_closed').closest('tr').find('input').value() == "0"
    then:
    to HomePage
    assert applyButton
}


def "can close applications"(){
    when:
    to ManageConfigPage

    and:
    configFormModule.toggleApplications(false)

    then:
    at ManageConfigPage
    assert $('#messages').text() == "Config successfully updated"
    assert $('td', text: 'config.application_closed').closest('tr').find('input').value() == "1"
    then:
    to HomePage
    assert !applyButton
}

这是applyButton内容定义:

applyButton(cache: false, required: false){ $('#apply_button') }

我也尝试直接在测试中使用选择器,而不是在内容定义中使用,但也不起作用。

那么这里发生了什么?主页是否完整缓存?如果是这样,我该如何预防或刷新它?这看起来像Geb 101,但手册并没有真正解决这个问题。

编辑:添加完整性的测试结果:

条件不满意:

!applyButton || | applyButton - SimplePageContent(owner:HomePage,args:[],value:null) 假

at AdminSpec.can close applications(AdminSpec.groovy:59)

1 个答案:

答案 0 :(得分:0)

按钮元素是否未包含在html中或者只是隐藏?如果它被隐藏,那么你需要检查它是否显示:

!applyButton.displayed