好吧,我可以通过指定 slimer.bat 文件的路径来启动 slimerjs:C:\bin\slimerjs\slimerjs.bat 然后执行我的文件。
但是,如果我修改 casperjs 文件(在 bin\ 中)并修改默认 exec 为 slimer :
'env_varname': 'SLIMERJS_EXECUTABLE',
'default_exec' : 'C:\bin\slimerjs\slimerjs.bat'
当我执行 casper 命令时:
casperjs --engine=slimerjs test.js
它不起作用,slimerjs.bat 的路径似乎被忽略了。
我也试过这个:https ://github.com/laurentj/slimerjs/blob/master/BUILD.md
但是仅使用 slimerjs.exe 是不够的,我需要在执行测试的当前文件夹中有 application.ini 和 omni.ja,并且我不想在每个文件夹中添加一些文件。
我想要的只是使用引擎属性在 casperjs 中执行 slimerjs,无论我在哪里,就像在 phantomjs 中一样,所以我需要设置一个绝对路径(或从根目录的相对路径)。
我不想在 slimerjs.bat 文件夹中并指定我想要执行的文件夹或 js 测试:casperjs test C:/bin/try/test.js --engine=slimerjs。
这里有一个类似的问题: https ://github.com/n1k0/casperjs/issues/591
编辑(感谢达伦库克的回答)了解更多详情:
set PATH=%PATH%;C:\\bin\\slimerjs
如果我为 slimer 设置 Windows PATH,当我执行 casperjs test --engine=slimerjs test.js 时,我会收到以下消息:
但是在 test.js 文件夹中添加这两个文件可以解决问题。
所以我想我必须修改 slimerjs bat 文件,以设置 slimerjs.bat 文件夹中的 :callexec 路径,而不是当前的 test.js 文件夹。
这里 :
:callexec
if ["%HIDE_ERRORS%"]==[""] (
%SLIMERJSLAUNCHER% -app "%SLIMERDIR%application.ini" %PROFILE% -attach-console -no-remote %__SLIMER_ARGS%
) ELSE (
%SLIMERJSLAUNCHER% -app "%SLIMERDIR%application.ini" %PROFILE% -attach-console -no-remote %__SLIMER_ARGS% 2>NUL
)
和 :
SET SLIMERDIR=%~dp0
问题是我不熟悉这种语法(批处理文件),它可能已经正确并且问题不是来自这里。
但我观察到的是它似乎从当前文件夹中寻找 application.ini 和 omni.ja,而不是 slimerjs 文件夹。
PS:第二个想法不起作用,但现在我知道它来自 slimerjs。
编辑:
REM % ~ d[rive] p[ath] 0[script name] is the absolute path to this bat file, without quotes, always.
REM ~ strips quotes from the argument
所以路径似乎很好,实际上它只适用于 slimerjs:slimerjs test.js 效果很好,它不需要 application.ini。所以这两者的结合是行不通的。
当您使用 casper 命令启动它时,路径不同(当前文件夹),并且 application.ini 不再被识别。