我在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代理将永远不会上传该文件。
其他检查:
sahi_11a83f8806be8046fc0aaa80eac076110b95__fr-fr-2-0.bdic
真正奇怪的是,我确定这些测试已经通过了一段时间,我的应用程序或配置中一定有所更改,这破坏了Sahi文件的上载,但是我找不到。
在Sahi控制台中,以前我有关于其上载文件的日志,现在根本没有日志。
最佳答案
表单发布到的URL与网页的URL是否不同? _setFile和_setFile2采用第三个参数,可以将其配置为指向操作URL(Sahi代理应将文件附加到的URL)http://sahi.co.in/w/_setFile