如何使用水豚 HTML 文件中两种形式之一的 fill_in 字段?
How to fill_in field in one of two forms in a HTML file using capybara?
我在一个 html 文件中有两种形式(注册和登录),我正在使用 Capybara 的 fill_in
语法对其进行测试。但是,两者都有一个用户名字段,都有一个密码字段,我得到 Ambiguous match, found 2 elements matching field :username
。我如何才能在我的规范帮助程序方法中确保我填写正确表格的字段。我想我需要 id=
每种形式,但我找不到任何有水豚语法的地方。
我的html
<form id="signUpForm"action='/user' method="post">
<!-- more fields -->
<input class="entryField" type="text" name="username" required>
<input class="entryField" type="password" name="password" required>
<!-- more fields -->
<input type="submit" value="Sign up">
</form>
<form id="signInForm" action="/session" method="post">
<input class="entryField" type="text" name="username" placeholder="Username">
<input class="entryField" type="password" name="password" placeholder="Password">
<input type="submit" value="Sign in">
</form>
还有我的辅助方法
def sign_in user
visit '/'
fill_in :username, with: user.username
fill_in :password, with: user.password
click_button 'Sign in'
end
您需要将 'fill_in' 指令的范围限定为特定形式。您可以使用 Capybara 的 #within 语法来执行此操作,如下所示:http://www.rubydoc.info/github/jnicklas/capybara/Capybara%2FSession%3Awithin
所以您的#sign_in 助手可能是:
def sign_in user
visit '/'
within('form#signInForm') do
fill_in :username, with: user.username
fill_in :password, with: user.password
click_button 'Sign in'
end
end
我在一个 html 文件中有两种形式(注册和登录),我正在使用 Capybara 的 fill_in
语法对其进行测试。但是,两者都有一个用户名字段,都有一个密码字段,我得到 Ambiguous match, found 2 elements matching field :username
。我如何才能在我的规范帮助程序方法中确保我填写正确表格的字段。我想我需要 id=
每种形式,但我找不到任何有水豚语法的地方。
我的html
<form id="signUpForm"action='/user' method="post">
<!-- more fields -->
<input class="entryField" type="text" name="username" required>
<input class="entryField" type="password" name="password" required>
<!-- more fields -->
<input type="submit" value="Sign up">
</form>
<form id="signInForm" action="/session" method="post">
<input class="entryField" type="text" name="username" placeholder="Username">
<input class="entryField" type="password" name="password" placeholder="Password">
<input type="submit" value="Sign in">
</form>
还有我的辅助方法
def sign_in user
visit '/'
fill_in :username, with: user.username
fill_in :password, with: user.password
click_button 'Sign in'
end
您需要将 'fill_in' 指令的范围限定为特定形式。您可以使用 Capybara 的 #within 语法来执行此操作,如下所示:http://www.rubydoc.info/github/jnicklas/capybara/Capybara%2FSession%3Awithin
所以您的#sign_in 助手可能是:
def sign_in user
visit '/'
within('form#signInForm') do
fill_in :username, with: user.username
fill_in :password, with: user.password
click_button 'Sign in'
end
end