gpt4 book ai didi

javascript - 使用 javascript 创建的页面的 Grails Gebish 功能测试

转载 作者:行者123 更新时间:2023-11-28 01:03:55 24 4
gpt4 key购买 nike

我正在编写一个测试类

class ListOfProjectsSpec extends GebReportingSpec{

def "project dashboard filters are instantiated correctly" () {
given:
at ProjectIndexPage

expect:
projectTable != null
}

}

测试我的ProjectIndexPage的功能。

class ProjectIndexPage extends ProjectsCategoryPage{

static at = {
$("title").text() == "Title"
}

static content = {
projectTable {
$("table.dynamic-projectTable")
}
}
}

(我清理了很多代码以仅显示最简单的情况)。

并发症

dynamic-projectTable 类在运行时添加到带有 jquery/javascript 的表中,作为页面上过滤器的访问器。

<g:javascript>
$(
$('#projectTable').addClass('dynamic-projectTable');
});
</g:javascript>

错误

junit.framework.AssertionFailedError: geb.error.RequiredPageContentNotPresent: 
The required page content 'projectTable- SimplePageContent (owner: ProjectIndexPage, args: [],
value: null)' is not present

其他信息

当查看 spock 测试的 html 输出时,很明显没有添加 dynamic-projectTable 类(由 $() 执行的所有其他操作也是如此) > jquery 调用 - 我在这里删除了它们以使示例更具可读性)

我尝试过

// calling the document.ready function explicitly in my test cases
when:
$("document").ready()

启用 JavaScript

driver = {
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);
driver
}

但似乎没有任何效果。有任何输入吗?

最佳答案

由 javascript 构建的页面通常需要 Geb 等待内容渲染。请参阅http://www.gebish.org/async了解详情。

基本上,我会尝试在您的规范代码中显式等待:

waitFor { projectTable }

等待也可以在页面内容上配置:

projectTable(wait: true) {
$("table.dynamic-projectTable")
}

关于javascript - 使用 javascript 创建的页面的 Grails Gebish 功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com