【问题标题】:Can't upload a file with Sahi / Mink / Behat in a Symfony2 application无法在 Symfony2 应用程序中使用 Sahi / Mink / Behat 上传文件
【发布时间】:2013-02-23 04:51:42
【问题描述】:

我在 Symfony2 应用程序中使用 Mink 和 Sahi 进行用户界面测试。但实际上我无法使用 Sahi 上传文件。

我的 Sahi 服务器已启动并正在运行:

[09:51:33] coil@ubuntu:~/Webdev/sahi/bin$ ./sahi.sh 
--------
SAHI_HOME: ..
SAHI_USERDATA_DIR: ../userdata
SAHI_EXT_CLASS_PATH:
--------
Sahi properties file = /home/coil/Webdev/sahi/config/sahi.properties
Sahi user properties file = /home/coil/Webdev/sahi/userdata/config/userdata.properties
Added shutdown hook.
>>>> Sahi started. Listening on port: 9999
>>>> Configure your browser to use this server and port as its proxy
>>>> Browse any page and CTRL-ALT-DblClick on the page to bring up the Sahi Controller
-----
Reading browser types from: /home/coil/Webdev/sahi/userdata/config/browser_types.xml
-----

我的步骤实现:

    // $element->getXpath() --> (//html/descendant-or-self::*[@id = 'attachment'])[1]
$element->attachFile($file);

这里请注意,如果我使用的文件不是/home/coil/Webdev/sahi/userdata 目录,则会出现以下错误:

$element->attachFile('toto');
error:_setFile2(_byXPath("(//html/descendant-or-self::*[@id = 'attachment'])[1]"), "toto")
      Error: File not found: toto; Base directory is userdata directory: /home/coil/Webdev/sahi/userdata
      Error: File not found: toto; Base directory is userdata directory: /home/coil/Webdev/sahi/userdata
      at Sahi._setFile (http://dev.project.com/_s_/spr/concat.js:1398:12)
      at Sahi._setFile2 (http://dev.project.com/_s_/spr/concat.js:1367:7)
      at eval (eval at <anonymous> (http://dev.project.com/_s_/spr/concat.js:3480:14), <anonymous>:1:7)
      at Sahi.ex (http://dev.project.com/_s_/spr/concat.js:3480:9)
      at <anonymous>:1:11
      <a href='/_s_/dyn/Log_getBrowserScript?href=null&n=-1'><b>Click for browser script</b></a>

因此,Sahi 可以“找到”该文件,因为它不会对有效且现有的文件引发任何错误。但是当提交表单时,Sahi 代理永远不会上传文件。

其他检查:

  • 我删除了客户端 HTML5 和 JavaScript 验证以确保没有副作用。
  • 我所有的其他 Sahi 测试都正常,只有上传的 3 个没有通过
  • 代理是在我的测试浏览器中设置的
  • 我可以毫无问题地在浏览器中打开 Sahi 控制器
  • MaxOsX 和 Ubuntu 上的同样问题
  • 每次我运行上传测试时,我都会在 /userdata/temp/download 中有一个新条目,命名为 sahi_11a83f8806be8046fc0aaa80eac076110b95__fr-fr-2-0.bdic

真正奇怪的是,我确信这些测试在很久以前就通过了,我的应用程序或配置中肯定发生了一些改变,这会破坏 Sahi 文件上传,但我找不到什么。 之前在 Sahi 控制台中,我有关于它正在上传的文件的日志,现在根本没有日志。

【问题讨论】:

  • 您是在“开发”环境还是在“生产”环境中运行应用程序?这可能是您看不到任何日志的原因?
  • 它使用test 环境。但我说的是 Sahi 日志而不是应用程序日志。

标签: php symfony behat mink sahi


【解决方案1】:

使用 Sahi 服务器可以访问的绝对系统路径。

【讨论】:

  • 我尝试使用 /tmp/file.doc 没有成功。我真的觉得代理级别的东西配置不好。
  • 可能是。但我确信在 SahiDriver 测试套件通过时上传是有效的。它有文件上传测试用例:/
  • 如果只运行上传测试,/bin/sahi.sh 控制台中是否有日志显示正在上传的文件?
【解决方案2】:

表单发布到的 url 是否与网页的 url 不同? _setFile 和 _setFile2 采用第三个参数,可配置为指向操作 URL(Sahi 代理应附加文件的 URL)http://sahi.co.in/w/_setFile

【讨论】:

  • 表单发布在与表单本身相同的 URL 中:&lt;form id="apply" action="/app_test.php/postuler-1" method="post" enctype="multipart/form-data" xmlns="http://www.w3.org/1999/html"&gt;
  • 我还尝试在 Sahi 的最后一个版本上使用 _setFile2,但没有成功。
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
相关资源
最近更新 更多