Mic*_*ryl 5 testing groovy webdriver geb web
我正在Geb(WebDriver)中构建一个测试,它需要使用没有提交按钮的表单.从用户的角度来看,它与在搜索词中输入并在键盘上按下回车键一样简单.
以纯脚本形式使用Geb,我可以通过在输入的文本中附加特殊键代码来解决这个问题,如下所示:
import org.openqa.selenium.Keys
$('input[id=myInputField]') << "michael"+Keys.ENTER
Run Code Online (Sandbox Code Playgroud)
这很好.但是,如果我想使用Geb推荐的页面对象模式(http://www.gebish.org/manual/0.7.1/pages.html#the_page_object_pattern),我看不到我应该做什么.我在EmployeeSearchPage对象的内容部分中定义了什么来复制缺少的searchButton及其"to"对象引用,告诉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']") }
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到我可以在表单中添加一个提交按钮,我可以用于测试并使用CSS将其定位到用户的视图之外,但为什么我必须使应用程序适应测试?事情应该反过来.
我一直在评估很多Web测试框架,并发现这种类型的表单对许多人来说都是一个问题 - 至少就他们的文档而言.
有任何想法吗?谢谢!
您不需要使用js集成来实现您想要的.
您还可以在页面类上定义方法,而不仅仅是内容.您可以通过以下方式实现一个可以执行所需操作的提交方法:
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
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用它:
to EmployeeSearchPage
searchField << 'michael' // searchField = 'michael' would have the same effect
submitForm()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5563 次 |
| 最近记录: |