首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有提交按钮的Geb (WebDriver)中提交表单

如何在没有提交按钮的Geb (WebDriver)中提交表单
EN

Stack Overflow用户
提问于 2013-01-08 02:20:11
回答 2查看 6K关注 0票数 5

我正在Geb (WebDriver)中构建一个测试,它需要使用一个没有提交按钮的表单。从用户的角度来看,它很容易使用,只需输入搜索词并按键盘上的enter键。

在纯脚本形式中使用Geb,我可以通过将特殊的键代码附加到正在键入的文本来解决此问题,如下所示:

代码语言:javascript
复制
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对象的content部分定义什么来复制丢失的searchButton和它的" to“对象引用,该引用告诉Geb如何处理结果页面?

代码语言:javascript
复制
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测试框架,发现这种类型的表单给他们中的许多人带来了问题-至少就他们的文档而言是这样。

有什么想法吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-08 21:06:58

你不需要使用js集成来达到你想要的效果。

您还可以在页面类上定义方法,而不仅仅是内容。您可以实现一个submit方法,该方法将通过以下方式完成您想要的操作:

代码语言:javascript
复制
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
    }
}

然后使用它:

代码语言:javascript
复制
to EmployeeSearchPage
searchField << 'michael' // searchField = 'michael' would have the same effect
submitForm()
票数 7
EN

Stack Overflow用户

发布于 2013-01-08 15:56:32

Geb提供了在浏览器上下文中执行JavaScript的支持,详情可以在here in the Geb documentation中找到。

您可以使用它来提交表单,就像在webapp本身中使用JavaScript提交表单一样。例如,如果您使用的是jQuery,那么它将非常简单:

代码语言:javascript
复制
js.exec('$("#myForm").submit()')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14201716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档