Java 最简单的Geb示例失败断言
我刚刚开始阅读和尝试一些Java 最简单的Geb示例失败断言,java,intellij-idea,geb,Java,Intellij Idea,Geb,我刚刚开始阅读和尝试一些Geb0.12.2示例及其文档(),需要帮助理解这些断言失败的原因。 我的第一次尝试是使用一个webapp,它可以重定向到我们的IDP进行登录,如果成功登录,则会将您重定向到私有webapp内容。 我在这个例子中失败了,并决定尝试最简单的例子(我还使用了Spok、用于重用的登录模块和规范定义),以便更好地理解发生了什么(我也是Eclipse用户,在这个场景中我已经切换到IntelliJ) 断言2和3失败,因为空值与预期标题进行了比较: package pages imp
Geb
0.12.2示例及其文档(),需要帮助理解这些断言失败的原因。
我的第一次尝试是使用一个webapp,它可以重定向到我们的IDP进行登录,如果成功登录,则会将您重定向到私有webapp内容。
我在这个例子中失败了,并决定尝试最简单的例子(我还使用了Spok、用于重用的登录模块和规范定义),以便更好地理解发生了什么(我也是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]]
Caught: Assertion failed:
heading == "Google" //3
| |
"" false
输出//3断言失败:
Caught: Assertion failed:
$('title').text() == "Google"
| | |
| "" false
[[[FirefoxDriver: firefox on WINDOWS (2c4f1f19-b4fc-4f1f-bb39-9e0e2459da58)] -> css selector: title]]
Caught: Assertion failed:
heading == "Google" //3
| |
"" false
只有第一个断言为true,这是内置的title属性。根据文档,有几种方法可以检索标题的值,但我似乎用错了
chromeTest、firefoxTest或phantomJS或通过命令行从IntelliJ或gradlew运行时也会失败)。
我已经重读了一些文档部分,但读得越多,理解得就越少
我误解或遗漏了什么
谢谢。您只能通过
页面
类的title
属性获取标题的值,这是您在/1
中执行的操作。不能使用$()
选择器选择
元素,这是WebDriver的一个限制-这就是为什么WebDriver.getTitle()
存在并且Page.getTitle()
委托给它(根据它的属性)
你能告诉我到底是哪一部分让你相信有几种方法可以获得这个头衔吗?我个人不认为该部分会做出这样的声明,但如果是这样的话,我们应该修复它。感谢您的澄清!我错误地表达了自己:我的意思是我混合了文档中显示的示例,即选择h1、p元素、div等等。。。您不应该修改任何内容,但对于像我这样的一些Geb学习者来说,在解释选择器或页面属性时,如果能看到任何建议,可能会有所帮助。我知道这实际上不是geb特定的限制,但因为它使用WebKit并通过Page对象公开它的方法,所以对我来说似乎不明显(因为我不知道WebKit),这些方法存在是因为无法以其他方式检索它的值。