package Pages
import geb.Page
class loginPage extends Page {
static url = 'login/'
static at = {title == "Login to TalentBank"}
static content = {
logo {$(".center-img img")}
emailHeader {$(".form-group label", text:"Email")}
emailTextBox {$('#email')}
pwdHeader {$(".form-group label", text:"Password")}
pwdTextBox {$("#password")}
loginButton {$("#loginButton")}
}
}
package Pages
import geb.Page
class homePage extends Page {
static at = {title == "Home"}
static content = {
tile1 {$("#page-container > div.container-fluid > div > div:nth-child(2) > div")}
}
}
import Pages.loginPage
import Pages.homePage
import geb.spock.GebReportingSpec
class loginPageSpec extends GebReportingSpec {
def "Log in to TalentBank Core"(){
given:
to loginPage
waitFor {loginButton.isDisplayed()}
when:
emailTextBox.value("Ruxin")
pwdTextBox.value("Test1234")
loginButton.click()
then:
waitFor {tile1.isDisplayed()}
at homePage
}
}
原因是:groovy.lang.MissingPropertyException:无法将tile1解析为Pages.LoginPage的内容或导航器上下文中的属性。tile1是您忘记导入的类吗?
它在loginPage中寻找tile1,而不是主页。
在测试中更改在
的位置,我还会添加页面引用,您将从自动完成中受益。
登录页面
package Pages
import geb.Page
class LoginPage extends Page {
static url = 'login/'
static at = {
title == "Login to TalentBank"
}
static content = {
logo {$(".center-img img")}
emailHeader {$(".form-group label", text:"Email")}
emailTextBox {$('#email')}
pwdHeader {$(".form-group label", text:"Password")}
pwdTextBox {$("#password")}
loginButton {$("#loginButton")}
}
}
首页
package Pages
import geb.Page
class HomePage extends Page {
static at = {
waitFor {title == "Home"} // Add waitFor here to verify on page
}
static content = {
tile1 {$("#page-container > div.container-fluid > div > div:nth-child(2) > div")}
}
}
import Pages.LoginPage
import Pages.HomePage
import geb.spock.GebReportingSpec
class LoginPageSpec extends GebReportingSpec {
def "Log in to TalentBank Core"(){
given:
Page loginPage = to LoginPage
waitFor {loginPage.loginButton.isDisplayed()}
when:
loginPage.emailTextBox.value("Ruxin")
loginPage.pwdTextBox.value("Test1234")
and: "Click login"
loginPage.loginButton.click()
then: "Check at home page"
Page homePage = at HomePage
and:
waitFor {homePage.tile1.isDisplayed()}
}
}
全面披露:我对Geb和Spock都很陌生。
本文向大家介绍如何对一个页面进行测试相关面试题,主要包含被问及如何对一个页面进行测试时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、UI测试:页面布局、页面样式检查、控件长度是否够长;显示时,是否会被截断;支持的快捷键,Tab键切换焦点顺序正确性等。 2、功能测试:页面上各类控件的测试范围,测试点。结合控件的实际作用来补充检查点: 比如, 密码框是否*显示, 输入是否做trim处理等。
我在scala上,我有多个针对不同类(testsuites)的测试文件,每一个都使用testcontainers(来自同一脚本的init)。 当我启动项目中的所有测试时,所有测试都失败了(由于testContainers导致与数据库的连接出现问题)。 当我分别启动测试时,所有的测试都成功了。 有没有办法为多个测试文件(testsuites)只启动一个容器?似乎只对同一文件中的测试起作用。 @Mat
我正在用Spock、Groovy和Geb编写UI功能测试,实现页面对象模式。在我的事件流中,我从当前页面导航以获得结果,因此,我需要在测试中切换页面对象,但我成功地做到了 下面的测试用例:
我试图重用我在另一个Geb规范中编写的一个Geb规范测试,这样我就不需要重写代码了。我总是需要在不同的页面的产品编号,所以我想做类似以下的事情; 在另一个GebSpec中,我希望使用上面的,如下所示:
最近,我一直试图从一个网站上获取大量的定价,从一个页面开始,每个项目的页面都链接到起始页面。我希望运行一个脚本,允许我单击某个项目的框,删除该项目的定价和描述,然后返回起始页并继续该循环。然而,有一个明显的问题,我在刮掉第一件物品后遇到了。返回起始页后,容器没有定义,因此出现了一个陈旧的元素错误,该错误会中断循环并阻止我获取其余的项。这是我使用的示例代码,希望能够一个接一个地刮去所有项目。 然而,