php - 无法在 Symfony2 应用程序中使用 Sahi/Mink/Behat 上传文件

标签 php symfony behat mink sahi

我在 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 Controller
  • 在 MaxOsX 和 Ubuntu 上有同样的问题
  • 每次我运行上传测试时,我都会在/userdata/temp/download 中得到一个新条目,名称类似于 sahi_11a83f8806be8046fc0aaa80eac076110b95__fr-fr-2-0.bdic

真正奇怪的是,我确信这些测试在前一段时间就通过了,我的应用程序或配置中一定发生了某些更改,导致 Sahi 文件上传中断,但我找不到是什么。 之前在 Sahi 控制台中我有关于它正在上传的文件的日志,现在根本没有日志。

最佳答案

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

关于php - 无法在 Symfony2 应用程序中使用 Sahi/Mink/Behat 上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871790/

相关文章:

php - 如何在 Symfony 中创建具有两种形式的页面?

composer-php - 如何使用 behat.yml 要求 vendor/autoload.php

ssl - 本地主机上的 Behat cURL SSL 证书错误

php - 1分钟后出现500服务器错误

php - 使用 PHP 基于 URL 参数选择多个下拉菜单

php - 使用Elastica进行全文查询

php - 在特质中表现上下文

php - Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 PUT 方法。支持的方法 : GET, HEAD

symfony2 是 selenium 登录

css - 在 Symfony2 中使用 Twitter Bootstrap 的最佳方式是什么?