【发布时间】:2017-08-21 13:52:23
【问题描述】:
我的页面上有以下设置:
<html>
<body>
<frame name="header" ></frame>
<frame name="footer" ></frame>
<frame name="inline" >
<input type="text" id:"fname">
</frame>
<body>
</html>
我想在带有 id 的字段中写一个文本
名字
我尝试了几个选项,但以下是最后一个。
class PageWithFrame extends Page {
static content = {
myFrame(page: FrameDescribingPage) { $('frame',name:'inline') }
}
}
class FrameDescribingPage extends Page {
static content = {
framefirstname { $('input', id:'fname') }
}
}
...
...
Then:
to PageWithFrame
withFrame(myFrame) {
framefirstname.value("Hallooo")
}
代码本身运行成功,没有任何错误。但是它不会填充输入字段。调试也没有提供太多信息。
有没有人知道这里发生了什么。
【问题讨论】:
-
您确定您的代码运行没有任何问题吗?以下对我来说看起来不是有效的 html:
<input type="text" id:"fname">,据我所知,这不是有效的 Groovy:$('input', id='fname')。还是这些只是复制和粘贴错误? -
@erdi 你是对的。这是我在编辑时犯的一个打字错误。它是 $('input', id:'fname')
-
所以只是为了进行健全性检查,浏览器控制台可以找到 $('input', id:'fname') 并在您的测试 framefirstname.isDisplayed() 中返回 true?
-
@Doug Clark 浏览器控制台无法直接找到 $('input', id:'fname') 因为它在框架中。这就是为什么我必须首先使用 myFrame(page: FrameDescribeingPage) { $('frame',name:'inline') } 引用框架。 Justin Schoen 的答案是正确的。问题是页面如何以我可以操作模块元素的方式接收有关框架模块的信息。
-
抱歉,不是您的浏览器驱动程序,而是您手动转到此页面。浏览器应该能够找到页面中的任何内容。我要问的是你确定你的选择器正在返回一些东西
标签: groovy automated-tests spock geb