【问题标题】:“Can’t Find Script Engine Vbscript” Or “There Is No Script Engine for .Vbs”“找不到脚本引擎 Vbscript”或“没有 .Vbs 的脚本引擎”
【发布时间】:2016-04-11 13:45:37
【问题描述】:

我正在使用一个名为 BrowserError.vbs 的 VBScript 文件,它接受正在使用的 Java 类的一个参数。 vbs文件用于在测试用例失败时发送电子邮件并附上截图。

问题:

如果我从命令提示符运行 vbs 文件,它可以正常工作并发送带有附件的电子邮件。

但是如果我从 Java 类运行它会给出以下错误:

.vbs TL02_Validate_ChaterInvalidLogin-1-11Apr16_045433 没有脚本引擎

BrowserError.vbs:

Dim ToAddress
Dim MessageSubject
Dim MessageBody
Dim MessageAttachment
Dim name
Dim folder
Dim displayMsg

Dim ol, ns, newMail

name = WScript.Arguments.Item(0)
FromAddress = "abc@def.com"
ToAddress = "abc@def.com"
CcAddress = "abc@def.com"
MessageSubject = "Sanity Error Alert !!!"
Set ol = WScript.CreateObject("Outlook.Application")
Set ns = ol.getNamespace("MAPI")
Set newMail = ol.CreateItem(olMailItem)
MessageAttachment = "C:\Users\****\Desktop\********\CnetWorkSpaceBranch\SanityBranch\target\surefire-reports\html\screenshots\" & name & ".png"
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile(MessageAttachment, 1)
strFileText = "Hi, Error notification on Sanity- User has encountered problem  : Refer screenshot "
objFileToRead.Close
Set objFileToRead = Nothing
newMail.Subject = MessageSubject & Now
newMail.HTMLBody  = strFileText
newMail.To = ToAddress
newMail.CC = CcAddress
newMail.Display
newMail.Attachments.Add(MessageAttachment).Displayname = "Check this out"
newMail.Send
Set ol = Nothing

用于传递参数的Java代码如下:

String tnm="TL02_Validate_ChaterInvalidLogin-1-11Apr16_045433";
Runtime.getRuntime().exec("wscript C:/BrowserError.vbs"+tnm);

我的核心兴趣是只发送电子邮件并在运行和发送电子邮件时从 Java 类中获取值。

【问题讨论】:

  • 在 Java 中,对于 vbs 程序员来说,.vbs 后面应该有一个空格。错误消息说它正在尝试执行一个扩展名为 vbsTL02_Validate_ChaterInvalidLogin-1-11Apr16_045433 的脚本,其中没有一个。
  • 看到这个Stackoverflow Q&A 或者this。我的建议(和 Stackoverflow 规则)是您在发布之前搜索错误消息。否则,事情会因多余的低营养职位而变得混乱。如果我的指点没有帮助,请告诉我。

标签: java email vbscript


【解决方案1】:

正如@Noodles 在他的comment 中对您的问题指出的那样,您将参数直接附加到脚本路径,从而创建了一个无法识别的扩展。

改变这个:

Runtime.getRuntime().exec("wscript C:/BrowserError.vbs"+tnm);

进入这个:

Runtime.getRuntime().exec("wscript C:/BrowserError.vbs "+tnm);
//                                                    ^

问题就会消失。

【讨论】:

  • 我在 .vbs 和 arg[0] 之间添加了一个空格。现在它工作正常。 Runtime.getRuntime().exec("wscript C:/BrowserError1.vbs"+" "+referScreenshot+" "+test_case_name);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
相关资源
最近更新 更多