我刚开始阅读并尝试了一些Geb
0.12.2示例及其文档(http://www.gebish.org/manual/current),需要帮助才能理解这些断言失败的原因。
我的第一次尝试是使用重定向到我们的IDP登录的webapp,如果它成功登录,则将您重定向到私有webapp内容。
我已经失败了这个例子,并决定尝试最简单的例子(我也使用Spok,登录模块进行重用和Spec定义)我可以做的更好地了解发生了什么(我' m也是一个Eclipse用户,我已经为这种情况切换到IntelliJ。)
断言2和3失败,因为空值与我预期的标题进行比较:
package pages
import geb.Browser
import geb.Page
class GooglePage extends Page {
static url = "http://www.google.com/"
static content = {
heading { $("title").text() }
}
static at = {
title == "Google" //1
$('title').text() == "Google" //2
heading == "Google" //3
}
}
Browser.drive{
to GooglePage
}
输出// 2断言失败:
Caught: Assertion failed:
$('title').text() == "Google"
| | |
| "" false
[[[FirefoxDriver: firefox on WINDOWS (2c4f1f19-b4fc-4f1f-bb39-9e0e2459da58)] -> css selector: title]]
输出// 3断言失败:
Caught: Assertion failed:
heading == "Google" //3
| |
"" false
只有第一个断言是真的,那就是内置的title属性。根据文档http://www.gebish.org/manual/current/#at-checker,有几种方法可以检索标题的值,但似乎我没有错误地使用它。
使用chromeTest,firefoxTest或phantomJS或通过命令行从IntelliJ或gradlew运行时失败。 我重新阅读了一些文档部分,但是我读的越多,我理解的就越少。
我错过了什么或者错过了什么?
感谢。
答案 0 :(得分:0)
您只能通过title
类的Page
属性获取标题的值,您可以在//1
中进行操作。您无法使用<title>
选择器选择$()
元素,这是WebDriver的限制 - 这就是WebDriver.getTitle()
存在且Page.getTitle()
委托给它的原因(根据它{{3 }})。
你能否指出我javadoc的哪一部分让你相信有几种获得头衔的方式?我个人并不认为该部分提出这样的陈述,但如果确实如此,我们应该修复它。