我正在Geb(WebDriver)中建立一个测试,该测试需要使用没有提交按钮的表单。从用户的角度来看,它就像输入搜索词并按键盘上的Enter键一样简单。
以纯脚本形式使用Geb,可以通过在输入的文本后附加特殊键代码来解决此问题,如下所示:
import org.openqa.selenium.Keys
$('input[id=myInputField]') << "michael"+Keys.ENTER
很好但是,如果我想使用Geb推荐的Page Object模式(http://www.gebish.org/manual/0.7.1/pages.html#the_page_object_pattern),则看不到该怎么做。我如何在EmployeeSearchPage对象的内容部分中定义什么,以复制丢失的searchButton及其“至”对象引用,该引用告诉Geb如何处理结果页面?
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将其放置在用户 View 之外,但是为什么我必须使应用程序适应测试呢?事情应该反过来工作。
我一直在评估许多Web测试框架,发现这种形式的表单对其中许多人来说都是一个问题-至少就其文档而言。
有任何想法吗?谢谢!
最佳答案
您无需使用js集成即可实现所需的功能。
您还可以在页面类上定义方法,而不仅仅是内容。您可以实现一个Submit方法,该方法可以通过以下方式完成您要查找的操作:
class EmployeeSearchPage extends Page {
static url = "http://localhost:8888/directory/"
static at = { title == "Employee Directory" }
static content = {
searchField { $("input[id=myInputField]")
}
void submitForm() {
searchField << Keys.ENTER
browser.page EmployeeSearchResultsPage
}
}
然后使用它:
to EmployeeSearchPage
searchField << 'michael' // searchField = 'michael' would have the same effect
submitForm()
关于testing - 如何在没有提交按钮的Geb(WebDriver)中提交表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14201716/