Dan*_*ier 23 ruby selenium cucumber capybara
我使用Cucumber,capybara和selenium驱动器进行测试.此测试应该转到表单并提交.正常的文字是
Scenario: Fill form
Given I am on the Form page
When I fill in "field1" with "value1"
And I fill in "field2" with "value2"
And I press "OK"
Then I should see "Form submited"
Run Code Online (Sandbox Code Playgroud)
问题是我没有表单中的OK按钮, 我需要一种方法来执行"form.submit",而不需要单击任何按钮或链接 - 就像在表单字段中按Enter时一样使用浏览器.
我不知道如何告诉capybara提交表格.我该怎么做?
Bri*_*unn 31
您可以访问selenium send_keys方法来调用返回事件
find_field('field2').native.send_key(:enter)
Run Code Online (Sandbox Code Playgroud)
Hak*_*ari 19
简单的解决方案:
When /^I submit the form$/ do
page.evaluate_script("document.forms[0].submit()")
end
Run Code Online (Sandbox Code Playgroud)
为capybara-envjs工作.也应该与硒一起使用.
sia*_*llo 10
我必须自己解决这个问题.在webrat我有这样的事情:
Then /^I submit the "([^\"]*)" form$/ do |form_id|
submit_form form_id
end
Run Code Online (Sandbox Code Playgroud)
我在Capybara能够实现同样的目标:
Then /^I submit the "([^\"]*)" form$/ do |form_id|
element = find_by_id(form_id)
Capybara::RackTest::Form.new(page.driver, element.native).submit :name => nil
end
Run Code Online (Sandbox Code Playgroud)
使用Capybara Selenium驱动程序,您可以执行以下操作:
within(:xpath, "//form[@id='the_form']") do
locate(:xpath, "//input[@name='the_input']").set(value)
locate(:xpath, "//input[@name='the_input']").node.send_keys(:return)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15867 次 |
| 最近记录: |