myjackyang 发表于 2007-12-21 10:10:44

QTP+在测试outlook遇到的问题?

问题:
我在测试OUTLOOK中测试时:
录制:输入收件人——主题——内容——点击"发送"

回放时:只输入了收件人。无法自动写出"主题""内容",也无法自动点击"发送"按钮。这是怎么回事?

我在查看录制的脚本时发现,主题里有我测试时输入的数据,而无内容数据。请高手指教。谢谢

jinsen 发表于 2007-12-21 10:28:13

Function SendMail(SendTo, Subject, Body, Attachment)
    Set ol=CreateObject("Outlook.Application")
    Set Mail=ol.CreateItem(0)
    Mail.to=SendTo
    Mail.Subject=Subject
    Mail.Body=Body
    If (Attachment <> "") Then
      Mail.Attachments.Add(Attachment)
    End If
    Mail.Send
    ol.Quit
    Set Mail = Nothing
    Set ol = Nothing
End Function

这个是我在帮助文档里找到的关于发送邮件的例子,希望能对你有点帮助。

myjackyang 发表于 2007-12-21 10:48:30

谢谢jinsen,可是这段脚本我应该放在我测试脚本的哪个位置呢?我主要侧重于黑盒测试,白盒测试还不懂。

jinsen 发表于 2007-12-21 14:38:36

其实这个Function已经囊括了你刚才所说的所有的步骤了:
Set ol=CreateObject("Outlook.Application") '//创建Outlook对象
Set Mail=ol.CreateItem(0) '//新建一个Mail
Mail.to=SendTo '//你所要送信的地址
Mail.Subject=Subject '//信的主题
Mail.Body=Body '//信的内容
If (Attachment <> "") Then '//是否要添加附件
   Mail.Attachments.Add(Attachment) '//添加附件
End If
Mail.Send '//发信
ol.Quit '//退出
Set Mail = Nothing '//清空对象
Set ol = Nothing '//清空对象

你只需要新建一个Test,把这个Function拷贝进去。然后,传入参数并调用它就可以了。

myjackyang 发表于 2007-12-21 15:19:07

谢谢jinsen 我试一下吧

myjackyang 发表于 2007-12-21 15:31:21

刚刚测试了一下jinsen的脚本,我还是不会用。不过非常感谢他。

我想知道的是为什么会出现这种情况:回放时:只输入了收件人。无法自动写出"主题""内容",也无法自动点击"发送"按钮。这是怎么回事?

我想qtp应该可以不依赖测试人员编写的脚本去掉用它未完成的任务,可能是我们的设置不对还是怎么回事?

美杜莎的瞳孔 发表于 2007-12-21 15:46:37

请问出错的提示信息是什么?

myjackyang 发表于 2007-12-21 15:57:14

就是在回放脚本的时候,输入了收件人地址以后,光标停留在标题处,一直没有响应。然后我就只能停止回放了。

myjackyang 发表于 2007-12-21 16:02:24

我想把现象抓图放下来,可是我不知道怎么放图片,请指教!

美杜莎的瞳孔 发表于 2007-12-21 16:04:52

先等他出现出错信息,看看是什么

xiaoyaoke 发表于 2007-12-21 16:05:21

把录制的代码贴出来看看

myjackyang 发表于 2007-12-21 16:07:46

好的,谢谢,我马上把代码贴出来,我想问一下怎么贴图片,请教我一下。

myjackyang 发表于 2007-12-21 16:14:01

这是expert view 内容:
Window("Outlook Express").WinToolbar("ToolbarWindow32").Press "创建邮件"
Window("新邮件").WinObject("myjackyang@166.").Type "myjackyang@166."
Window("新邮件").WinObject("myjackyang@166.").TypemicBack
Window("新邮件").WinObject("myjackyang@166.").TypemicBack
Window("新邮件").WinObject("myjackyang@166.").Type "3.com"
Window("新邮件").WinObject("RichEdit20W").Click 31,20
Window("新邮件").WinObject("RichEdit20W").Click 33,12
Window("hello").WinObject("hello").Type "hello"
Window("hello").WinToolbar("ToolbarWindow32").Press "发送"

下面是运行结果的报错内容:

RichEdit20W The statement contains one or more invalid function arguments. Failed 2007-12-21 - 15:42:59

RichEdit20W Object's physical description:
window id = 1004
regexpwndclass = RichEdit20W
Warning 2007-12-21 - 15:42:59

以上是脚本代码和运行结果的出错提示

美杜莎的瞳孔 发表于 2007-12-21 16:14:31

我试了下,是这么个情况:
outlook中发送新邮件,在你输入主题后,整个窗体的窗体名字会变成主题名,也就是说窗体对象是动态的,那么当你回放时,窗体名还是叫“新邮件”,自然就找不到这个对象了。。

美杜莎的瞳孔 发表于 2007-12-21 16:16:34

要解决的话,可以尝试在对象库中修改窗体对象的名字,用正则表达式实现窗体名字参数化

myjackyang 发表于 2007-12-21 16:17:03

那应该怎么解决这个问题?谢谢

myjackyang 发表于 2007-12-21 16:23:36

太复杂了,谢谢你"美杜莎的瞳孔",正则表达式我都还不会用,但我知道应该怎么去解决这个问题了。

美杜莎的瞳孔 发表于 2007-12-21 16:28:23

不客气哈,能解决就好

jinsen 发表于 2007-12-21 16:35:55

说说怎么解决吧。我也很想知道。

Frankway.lau 发表于 2007-12-29 11:34:04

怎么没有了,我也很想知道了。::)
页: [1] 2
查看完整版本: QTP+在测试outlook遇到的问题?