GEB 找不到元素
GEB not finding elements
我对 GEB 很陌生,我正在尝试使用 spock 和 selenium 创建一个非常简单的测试用例。
该应用程序是使用 OJET 的单页应用程序
HTML 代码
<div class="oj-hybrid-padding">
<div id="dashboardTitleDiv">
<h1>Dashboard Content Area</h1>
</div>
.....
</div>
GEB 页面
class ISSDashboardPage extends Page {
static url = "?root=dashboard"
static at = { $("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area" }
}
Groovy 测试
class NavigateToWorkspaceSpec extends GebSpec {
def "can navigate to Workspace"() {
when: to ISSDashboardPage
then: waitFor(25){at ISSDashboardPage}
}
}
出于某种我不明白的原因,页面 "at" 上的选择器无法正常工作。这是我得到的错误:
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.763 sec <<< FAILURE! - in NavigateToWorkspaceSpec
can navigate to Workspace(NavigateToWorkspaceSpec) Time elapsed: 10.39 sec <<< FAILURE!
org.codehaus.groovy.runtime.powerassert.PowerAssertionError:
$("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area"
| | |
[] null false
at NavigateToWorkspaceSpec.can navigate to Workspace(NavigateToWorkspaceSpec.groovy:8)
Results :
Failed tests:
NavigateToWorkspaceSpec.can navigate to Workspace:8->GebSpec.methodMissing:56 $("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area"
| | |
[] null false
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
如果选择器只是 "$(h1).text() 它会找到第一个 "h1" 元素的文本
$("h1").text() == "Dashboard Content Area"
| | |
| | false
| Inside Sales
谁能找出问题所在?
我注意到页面的一部分尚未呈现(实际上我还看不到我期望看到的)。但我期望测试中的 waitFor 会等待至少 25 秒,直到该选择器被解析。
非常感谢。
此致
确保
at
检查器未被缓存,
- 该元素是可选的并且
- 只需将等待权集成到页面元素中,以避免在您的测试中出现
waitFor
。 (但是,嘿,25 秒真的很长。你的页面真的这么慢吗?)
static at = { dynamicH1.text() == "Dashboard Content Area" }
static content = {
dynamicH1(required: false, wait: 25, cache: false) { $("div#dashboardTitleDiv>h1") }
}
我对 GEB 很陌生,我正在尝试使用 spock 和 selenium 创建一个非常简单的测试用例。
该应用程序是使用 OJET 的单页应用程序
HTML 代码
<div class="oj-hybrid-padding">
<div id="dashboardTitleDiv">
<h1>Dashboard Content Area</h1>
</div>
.....
</div>
GEB 页面
class ISSDashboardPage extends Page {
static url = "?root=dashboard"
static at = { $("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area" }
}
Groovy 测试
class NavigateToWorkspaceSpec extends GebSpec {
def "can navigate to Workspace"() {
when: to ISSDashboardPage
then: waitFor(25){at ISSDashboardPage}
}
}
出于某种我不明白的原因,页面 "at" 上的选择器无法正常工作。这是我得到的错误:
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 10.763 sec <<< FAILURE! - in NavigateToWorkspaceSpec
can navigate to Workspace(NavigateToWorkspaceSpec) Time elapsed: 10.39 sec <<< FAILURE!
org.codehaus.groovy.runtime.powerassert.PowerAssertionError:
$("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area"
| | |
[] null false
at NavigateToWorkspaceSpec.can navigate to Workspace(NavigateToWorkspaceSpec.groovy:8)
Results :
Failed tests:
NavigateToWorkspaceSpec.can navigate to Workspace:8->GebSpec.methodMissing:56 $("div#dashboardTitleDiv>h1").text() == "Dashboard Content Area"
| | |
[] null false
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
如果选择器只是 "$(h1).text() 它会找到第一个 "h1" 元素的文本
$("h1").text() == "Dashboard Content Area"
| | |
| | false
| Inside Sales
谁能找出问题所在? 我注意到页面的一部分尚未呈现(实际上我还看不到我期望看到的)。但我期望测试中的 waitFor 会等待至少 25 秒,直到该选择器被解析。
非常感谢。
此致
确保
at
检查器未被缓存,- 该元素是可选的并且
- 只需将等待权集成到页面元素中,以避免在您的测试中出现
waitFor
。 (但是,嘿,25 秒真的很长。你的页面真的这么慢吗?)
static at = { dynamicH1.text() == "Dashboard Content Area" }
static content = {
dynamicH1(required: false, wait: 25, cache: false) { $("div#dashboardTitleDiv>h1") }
}