51Testing软件测试论坛

标题: 关于选择outlook对话框的代码 [打印本页]

作者: hlaissy    时间: 2009-7-15 13:44
标题: 关于选择outlook对话框的代码
下面是用VBS编写的关于QTP自动发送Email的代码:
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(Sttachment <> "") Then
      Mail.Attachments.Add(Attachment)
   End If
   Mail.Send
   ol.Quit
   Set Mail = Nothing
   Set ol = Nothing
End Function

Call SendMail("test@sina.com", "qtTest.name", "qtTest.LastRunResults.Status", "")


当运行完这段代码后,会弹出一个对话框,让你选择是否发送邮件的,请各位大侠帮帮忙,如何编写这个对话框的程序

[ 本帖最后由 hlaissy 于 2009-7-15 13:45 编辑 ]
作者: ls_721521    时间: 2009-7-15 13:47
直接用sendkeys 发送回车就行了吧
作者: hlaissy    时间: 2009-7-15 14:02
我如何来选择“是”或“否”呢?
作者: shanxi    时间: 2009-7-15 14:06
标题: 回复 3# 的帖子
Send Tab key
作者: hlaissy    时间: 2009-7-15 15:14
谢谢
作者: hlaissy    时间: 2009-7-15 15:55
我还是不会写,能帮我写一个吗?谢谢了
作者: xiaoyaoke    时间: 2009-7-15 16:01
标题: 回复 6# 的帖子
上面说的方法可能不行,这是outlook防脚本发垃圾邮件的一个机制,通过QTP发送的时候会弹出提示,我记得之前遇到时有两种情况,对于office 2007里面的outlook是可以去配置中取消弹出提示框的,对于2003版的outlook,就没有提供取消的方法,要在QTP的外部运行一段代码来取消掉这个弹出提示框
作者: hlaissy    时间: 2009-7-15 16:11
代码如何来写?
作者: dreamsea123    时间: 2009-7-15 16:58
用spy捕捉一下对话框的属性,用描述性编程,同时加一个判断,若弹出对话框,点击确定,没有弹出,邮件已经发发
作者: hlaissy    时间: 2009-7-16 15:48
不行,我用sendkeys写的代码:
Dim Wshshell
Set Wshshell= WScript.CreateObject("WScript.Shell")
Wshshell.AppActivate "Microsoft Office Outlook"
WScript.Sleep 5000
Wshshell.SendKeys "+{TAB}"
WScript.Sleep 2000
Wshshell.SendKeys "~"

当上面的程序run完弹出对话框时,这段代码却不运行。。。

还有就是用QTP扑捉对话框的属性,同样是不能运行。。。
作者: dreamsea123    时间: 2009-7-16 16:20
参考一下:[原创]自动点击outlook中安全页面中yes按钮的方法 by风过无息

地址:http://www.51testing.com/?uid-3528-action-viewspace-itemid-97579
作者: dreamsea123    时间: 2009-7-16 16:21
上面写的应该很详细
作者: hlaissy    时间: 2009-7-16 17:02
我这里弹出的窗口是这样的:


还有我想问你的是fso.SendKeys "a", True中的“a”是什么意思?
作者: hsjzfling    时间: 2009-7-16 18:02
标题: 回复 1# 的帖子
如果只是想通过QTP发送邮件可以参考如下两种方法

1. 通过CDO.Message
注意需要在代码中填上对应的SMTP Server,Outlook就填自己公司的,可以在Outlook的Email Account信息中查看到
  1. Function SendMail(SendFrom, SendTo, Subject, Body)
  2.     Set oMail = CreateObject("CDO.Message")
  3.         oMail.From = SendFrom
  4.     oMail.To = SendTo
  5.     oMail.Subject = Subject
  6.     oMail.Textbody  = Body
  7.        
  8.         oMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  9.         oMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ‘公司的SMTP服务器
  10.         oMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
  11.         oMail.Configuration.Fields.Update
  12.        
  13.     oMail.Send

  14.     Set oMail = Nothing

  15. End Function
复制代码
2. 通过CDONTS.NewMail
下面的链接介绍的比较详细
http://blog.csdn.net/KanJingCode/archive/2006/05/17/742030.aspx
作者: ls_721521    时间: 2009-7-16 18:08
标题: 回复 14# 的帖子
thanks
作者: xiaoyaoke    时间: 2009-7-17 18:31
http://www.advancedqtp.com/knowl ... ook-security-popup/

楼主可以参考下这个帖子~
作者: whoamiyaya    时间: 2009-9-22 14:39
我有两个问题想和大家讨论下:
1)我参考了11#和16#的链接里的代码,加到了下面的红色部分,然后在qtp运行,然后那个窗口出来后让你选择yes或者no,然后就停在那里不动了,这是为什么呢?好像没有效果嘛……而且其实我也不太明白这段红色代码的意思,谁能解释一下吗~~谢拉

2) 我一直很好奇这个问题,就是Mail.Subject咯Mail.to咯这种对象或者函数在qtp或者vbs的帮助文档里并搜不到,大家是怎么知道这些函数的呢?包括很多操作excel的也是,我都是网上搜来的,可要是真的想自己写,应该参照什么文档或者什么工具呢?

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(Sttachment <> "") Then
      Mail.Attachments.Add(Attachment)
   End If
   Mail.Send
'   ol.Quit
       

        Set fso = CreateObject("WScript.shell")
        While fso.AppActivate("Microsoft Outlook") =FALSE
                WScript.sleep 1000
        Wend
        fso.SendKeys "a",True
        fso.SendKeys "y",True
        wscript.sleep 7000
        While fso.AppActivate ("Microsoft Outlook") =FALSE
          WScript.sleep 1000
        Wend
        fso.SendKeys "y",True
       
        Set Mail = Nothing
        Set ol = Nothing
End Function

Call SendMail("test@sina.com", "qtTest.name", "qtTest.LastRunResults.Status", "")

[ 本帖最后由 whoamiyaya 于 2009-9-22 14:46 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2