Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 使用capybara mechanize进行远程测试:表单提交导致URL不正确(404=>;Net::HTTPNotFound)_Forms_Capybara_Http Status Code 404_Mechanize - Fatal编程技术网

Forms 使用capybara mechanize进行远程测试:表单提交导致URL不正确(404=>;Net::HTTPNotFound)

Forms 使用capybara mechanize进行远程测试:表单提交导致URL不正确(404=>;Net::HTTPNotFound),forms,capybara,http-status-code-404,mechanize,Forms,Capybara,Http Status Code 404,Mechanize,正在测试的应用程序:运行在流浪vm上的CakePHP应用程序 进行测试的应用程序:本地(基本空白)Rails应用程序 失败是: 404 => Net::HTTPNotFound 假设我的虚拟机上正在运行应用程序 'www.domain.comx' 失败场景转到主页,登录,单击创建新内容,填写表单并单击保存 然后,测试将查找应该在返回页面上的信息(如果保存正确) 代码运行到表单提交时没有问题,但是保存的URL变得奇怪 而不是从 'www.domain.comx/something/

正在测试的应用程序:运行在流浪vm上的CakePHP应用程序

进行测试的应用程序:本地(基本空白)Rails应用程序

失败是:

 404 => Net::HTTPNotFound
假设我的虚拟机上正在运行应用程序

 'www.domain.comx'
失败场景转到主页,登录,单击创建新内容,填写表单并单击保存

然后,测试将查找应该在返回页面上的信息(如果保存正确)

代码运行到表单提交时没有问题,但是保存的URL变得奇怪

而不是从

 'www.domain.comx/something/new'

它会

 'www.domain.comx/something/something/create'
并抛出错误

在代码的某个地方,它复制了URL中的“某物”

是什么导致了这个问题

我一直在研究重定向和其他问题,但似乎找不到解决方案

该应用程序是实时的,由25人组成的团队使用了近5年。考试应该通过了

以下是跟踪,以防有帮助:

 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:125:in `rescue in process_remote_request'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:103:in `process_remote_request'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:43:in `block (2 levels) in <class:Browser>'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:69:in `process'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:41:in `process_and_follow_redirects'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:32:in `submit'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/form.rb:80:in `submit'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/node.rb:8:in `click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `block in click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/base.rb:85:in `synchronize'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/actions.rb:25:in `click_link_or_button'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/session.rb:810:in `block (2 levels) in <class:Session>'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>'
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:125:“救援过程中的远程请求”
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:103:“进程中的远程请求”
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:43:in `块(2层)in'
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:69:在“进程”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack\u test/browser.rb:41:在“进程”和“跟踪”重定向中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:32:in“提交”
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/form.rb:80:in“提交”
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/node.rb:8:在“单击”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:在“单击中块”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/base.rb:85:在“同步”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:在“单击”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/actions.rb:25:在“单击链接”或“按钮”中
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/session.rb:810:in`block(2层)in'
#/Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/dsl.rb:50:in`block(2层)in'
下面是表单html的简化版本:

 <form id="create" method="post" action="something/create">

  <div class="form-group col-md-4">
   <div class="form-group">
    <label for="usuario_email">E-mail *</label>
    <input type="email" name="data[usuario][email]" id="usuario_email" class="form-control">
   </div>
  </div>

  <div class="form-group col-md-4">
   <label for="usuario_nome">Nome *</label>
   <input type="text" name="data[usuario][nome]" id="usuario_nome" class="form-control">
  </div>

  <div class="form-group col-md-4">
   <label for="usuario_telefone">Telefone *</label>
    <input type="text" name="data[usuario][telefone]" id="usuario_telefone" class="form-control" alt="phone">
  </div>

  <div class="form-group col-md-6">
   <div class="pull-right">
    <button type="submit" class="btn btn-success btn-lg" id="salvar">
     <span class="glyphicon glyphicon-ok"></span>
    </button>
   </div>
  </div>

 </form>

电子邮件*
诺姆*
电传*

由于您的操作路径是相对的,因此这似乎操作正确。对于您期望的行为,表单操作属性需要是“创建”(相对)、“/something/create”(绝对)或“./something/create”(相对)取决于您是否在不同的URL上使用同一表单,以及它在这些URL上的行为。

表单的HTML是什么?我只是在问题中添加了表单的HTML。完美。非常感谢。将表单的操作更改为“/something/create”有效。
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:125:in `rescue in process_remote_request'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:103:in `process_remote_request'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/browser.rb:43:in `block (2 levels) in <class:Browser>'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:69:in `process'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:41:in `process_and_follow_redirects'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/browser.rb:32:in `submit'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/rack_test/form.rb:80:in `submit'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-mechanize-1.5.0/lib/capybara/mechanize/node.rb:8:in `click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `block in click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/base.rb:85:in `synchronize'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/element.rb:143:in `click'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/node/actions.rb:25:in `click_link_or_button'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/session.rb:810:in `block (2 levels) in <class:Session>'
 # /Users/ViviPoit/.rvm/gems/ruby-2.3.0/gems/capybara-2.16.1/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>'
 <form id="create" method="post" action="something/create">

  <div class="form-group col-md-4">
   <div class="form-group">
    <label for="usuario_email">E-mail *</label>
    <input type="email" name="data[usuario][email]" id="usuario_email" class="form-control">
   </div>
  </div>

  <div class="form-group col-md-4">
   <label for="usuario_nome">Nome *</label>
   <input type="text" name="data[usuario][nome]" id="usuario_nome" class="form-control">
  </div>

  <div class="form-group col-md-4">
   <label for="usuario_telefone">Telefone *</label>
    <input type="text" name="data[usuario][telefone]" id="usuario_telefone" class="form-control" alt="phone">
  </div>

  <div class="form-group col-md-6">
   <div class="pull-right">
    <button type="submit" class="btn btn-success btn-lg" id="salvar">
     <span class="glyphicon glyphicon-ok"></span>
    </button>
   </div>
  </div>

 </form>