我正在尝试使用ScalaTest和FluentLenium在Play框架中填写、提交和测试web表单。它看起来应该是非常简单的,但我有各种各样的问题。
首先,有问题的web表单的一部分:
<form class="signin" id="loginform" method="POST" action="/login">
<div class="form-group">
<label for="name">Email Address:</label>
<input type="email" class="form-control" placeholder="Enter Email Address" id="email" name="email" required />
...这在真正的web浏览器中运行得很好。现在,当我尝试填写和提交表单时,问题出现了:
@RunWith(classOf[JUnitRunner])
@SharedDriver(deleteCookies = false)
@SharedDriver(`type` = SharedDriver.SharedType.PER_CLASS)
class TestWebsiteAuthentication extends Specification {
"Application" should {
"login as an administrative user on the web site" in new WithBrowser with GPAuthenticationTestUtility {
browser.goTo(loginURL)
browser.fill("#email").`with`(prerequisiteAccounts.head.userIdentity) must equalTo(OK)
...在最后一行,我得到了一个异常:
org.fluentlenium.core.action.FillConstructor@1c25c183 x以管理用户身份登录网站错误info不等于' 200‘(TestWebsiteAuthentication.scala:93)错误:200错误实际:info
你知道我哪里做错了吗?
我试过去掉“必须equalTo(OK)”,但这只会导致表单在提交时失败--不幸的是,我还没有找到关于如何做到这一点的任何文档,所以我基本上是一点一点地把它们拼凑起来。如果您能提供相关文档的链接,我们将不胜感激-- Tyrpesafe上似乎没有任何完整的文档...只是让你入门的“引导者”,但没有深度。:-(
发布于 2015-12-11 13:25:23
当您编写browser.fill("#email").``with``("x@y.com")时,您真正要做的就是告诉Fluentlenium编辑模板,以便在输入标记内添加一个值属性。另一方面,OK是一个HTTP状态代码,所以比较它们自然会产生false。
当您说您尝试提交表单但失败时,我假设您做了如下操作:
browser.fill("#email").`with`("x@y.com")
browser.fill("#password").`with`("myPass")
browser.click("#button") // this should submit the form and load the page after login然后尝试做出这样的断言:
browser.title() must equalTo("next page") // fails because "next page" != "login page"一种建议是在browser.click之前尝试这样的事情
browser.pageSource() must contain("xyz") // this will fail当上面的断言失败时,它将把browser.pageSource()的内容打印到您的终端,您将能够看到Fill函数对HTML所做的修改。
在我的例子中,我观察到我的pageSource()现在包含以下内容:
<input type="text" id="email" name="email" value="x@y.com"/>
<input type="password" id="password" name="password"/>注意第一个输入有一个value="x@y.com",但是第二个输入仍然是空的。原来第二个是空的,因为它是一个输入类型为password的输入,但是我最终还是让表单login工作了。
以下是您可以查看的内容列表:
browser.goTo不能很好地处理表单提交(有人可以确认吗?)希望这能有所帮助
https://stackoverflow.com/questions/29734897
复制相似问题