无法将值传递给测试用例中的输入字段
can't pass value to the input fied in test case
我想在测试用例中将一个值传递给输入字段。然而,这是行不通的。下面是我的代码。
class Mypage extends Page {
static content = {
inputfield { withFrame ("myFrame") {$('input',name:'myInputField') }
}
}
}
然后这样测试:
given:
String thevalue = "hello"
then:
to Mypage
and:
inputfield >> thevalue
通过这段代码,我得到了
StaleElementReference error and the chrome driver information
然后我通过将 thevalue 变量放在 Mypage class 中尝试了以下操作:
class Mypage extends Page {
public String thevalue = "hello"
static content = {
inputfield { withFrame ("myFrame")
{$('input',name:'myInputField') }
}
}
}
然后在没有给定的情况下以同样的方式进行测试:
then:
to Mypage
and:
inputfield >> thevalue
我仍然遇到同样的错误。
然后我尝试了第三种形式:
class Mypage extends Page {
//public String thevalue = "hello"
static content = {
inputfield { withFrame ("myFrame")
{ thevalue -> $('input',name:'myInputField').value(thevalue ) }
}
}
}
然后用两种方式测试:
then:
to Mypage
and:
inputfield("hello")
这样:
then:
to Mypage
and:
inputfield >> "hello"
唯一可行的方法是当我直接在 class
中传递值时
inputfield { withFrame ("myFrame")
{ $('input',name:'myInputField').value("hello") }
但目标是通过测试中的值。我该怎么做
如果您按照 The Book of Geb 中的 Geb 示例进行操作,您就会拥有自己的页面并且它包含一个 iframe。示例中的 iframe 有自己的页面对象:
class PageWithFrame extends Page {
static content = {
myFrame(page: FrameDescribingPage) { $('#frame-id') }
}
}
//This is your iframe page object
class FrameDescribingPage extends Page {
static content = {
myTextField { $('input',name:'myInputField') }
}
}
现在要与它交互,请在测试方法中执行此操作:
def "my test method"() {
when:
to PageWithFrame
withFrame(myFrame) {
myTextField.value("whatever")
}
//etc
}
如果您真的不想听从 Rushby 的建议并坚持您在问题中显示的路径,那么以下方法将起作用:
class Mypage extends Page {
static content = {
inputfield { thevalue ->
withFrame ("myFrame") {
$('input',name:'myInputField').value(thevalue)
}
}
}
}
和
then:
to Mypage
and:
inputfield("hello")
我想在测试用例中将一个值传递给输入字段。然而,这是行不通的。下面是我的代码。
class Mypage extends Page {
static content = {
inputfield { withFrame ("myFrame") {$('input',name:'myInputField') }
}
}
}
然后这样测试:
given:
String thevalue = "hello"
then:
to Mypage
and:
inputfield >> thevalue
通过这段代码,我得到了
StaleElementReference error and the chrome driver information
然后我通过将 thevalue 变量放在 Mypage class 中尝试了以下操作:
class Mypage extends Page {
public String thevalue = "hello"
static content = {
inputfield { withFrame ("myFrame")
{$('input',name:'myInputField') }
}
}
}
然后在没有给定的情况下以同样的方式进行测试:
then:
to Mypage
and:
inputfield >> thevalue
我仍然遇到同样的错误。
然后我尝试了第三种形式:
class Mypage extends Page {
//public String thevalue = "hello"
static content = {
inputfield { withFrame ("myFrame")
{ thevalue -> $('input',name:'myInputField').value(thevalue ) }
}
}
}
然后用两种方式测试:
then:
to Mypage
and:
inputfield("hello")
这样:
then:
to Mypage
and:
inputfield >> "hello"
唯一可行的方法是当我直接在 class
中传递值时 inputfield { withFrame ("myFrame")
{ $('input',name:'myInputField').value("hello") }
但目标是通过测试中的值。我该怎么做
如果您按照 The Book of Geb 中的 Geb 示例进行操作,您就会拥有自己的页面并且它包含一个 iframe。示例中的 iframe 有自己的页面对象:
class PageWithFrame extends Page {
static content = {
myFrame(page: FrameDescribingPage) { $('#frame-id') }
}
}
//This is your iframe page object
class FrameDescribingPage extends Page {
static content = {
myTextField { $('input',name:'myInputField') }
}
}
现在要与它交互,请在测试方法中执行此操作:
def "my test method"() {
when:
to PageWithFrame
withFrame(myFrame) {
myTextField.value("whatever")
}
//etc
}
如果您真的不想听从 Rushby 的建议并坚持您在问题中显示的路径,那么以下方法将起作用:
class Mypage extends Page {
static content = {
inputfield { thevalue ->
withFrame ("myFrame") {
$('input',name:'myInputField').value(thevalue)
}
}
}
}
和
then:
to Mypage
and:
inputfield("hello")