我正在 Geb (WebDriver) 中建立一个测试,该测试需要使用没有提交按钮的表单。从用户的角度来看,使用起来就像输入搜索词并按键盘上的回车键一样简单。
以纯脚本形式使用 Geb,我可以通过将特殊键代码附加到正在输入的文本中来解决此问题,如下所示:
import org.openqa.selenium.Keys
$('input[id=myInputField]') << "michael"+Keys.ENTER
这很好用。但是如果我想使用 Geb 推荐的页面对象模式 (http://www.gebish.org/manual/0.7.1/pages.html#the_page_object_pattern),我看不出我应该做什么。我在 EmployeeSearchPage 对象的内容部分定义什么来复制丢失的 searchButton 及其告诉 Geb 如何处理结果页面的“to”对象引用?
class EmployeeSearchPage extends Page {
static url = "http://localhost:8888/directory/"
static at = { title == "Employee Directory" }
static content = {
searchField { $("input[id=myInputField]") }
// THE FOLLOWING BUTTON DOESN'T EXIST IN MY CASE
searchButton(to: EmployeeListPage) { $("input[value='SUBMIT']") }
}
}
我意识到我可以在表单中添加一个提交按钮来进行测试,并使用 CSS 将其置于用户视图之外,但为什么我必须让应用程序适应测试呢?事情应该反过来。
我一直在评估许多 Web 测试框架,发现这种类型的表单对其中许多人来说是个问题——至少就他们的文档而言。
有任何想法吗?谢谢!