黄瓜,水豚和硒 - 提交没有按钮的表格

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)

  • 诀窍..应该是第一个答案 (2认同)

Aar*_*ter 5

使用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)