求助,为啥执行这个模拟键盘代码老是提示缺少对象呢
如图,请前辈指导,谢谢。回复 1# wyfyan
如下Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}" '按回车 回复 2# 黑羽祭
谢谢斑竹孜孜不倦的教诲。
我想知道,Set WshShell = CreateObject("WScript.Shell") 与 Set WshShell = WScript.CreateObject("WScript.Shell") ,这两句有什么区别啊?作用是什么?
还有,如果我想用SendKeys模拟键盘的方法如何实现opennewtab的目的呀?
再次致谢。 回复 3# wyfyan
第一个问题,区别看写法就知道了,作用的话,我也说不清,反正新建个Wscript对象,我就是这么用的。
第二个问题,你想新建一个IE的选项卡是么?如果要用SendKeys实现,就是实现按Ctrl+T,脚本写法就是点在IE上,然后WshShell.SendKeys "^T"
http://www.51testing.com/index.php?uid-307440-action-viewspace-itemid-827982
回复黑羽祭
谢谢斑竹孜孜不倦的教诲。
我想知道,Set WshShell = CreateObject("WScript.Shell")...
wyfyan 发表于 2013-1-7 22:15 http://bbs.51testing.com/images/common/back.gif
wscript是window脚本宿主的root对象。脚本宿主可以理解为脚本的运行环境。
加wscript就是要使用windows的脚本运行环境,不加就是默认使用qtp的脚本运行环境。你在qtp里运行vbs当然是要使用qtp的运行环境了 回复 4# 黑羽祭
第二个问题,我执行如下代码,为啥没有打开新的选项卡呀?
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "iexplore"
wait 15
WshShell.SendKeys "^T" 回复 5# xjwldlover
哦,若有所悟!谢谢高人指点! QTP使用了VBScript编译器,但和VB还是不同的,QTP中的CreateObject是一个内置函数,返回结果是一个activex对象,QTP中没有WScript这个内置对象,所以你的脚本set s = WScript.CreateObject("WScript.Shell")报错,报的就是WScript这个对象不存在。
在别的编译器中,内置了WScript对象,这个对象有一个CreateObject方法,所以在那个编译环境中可以这么写set s = WScript.CreateObject("WScript.Shell")。 回复 8# 泰然
哦,是因为QTP中没有WScritp对象,所以报错。那CreateObject("WScript.Shell")为啥没有报错啊 回复泰然
哦,是因为QTP中没有WScritp对象,所以报错。那CreateObject("WScript.Shell")为啥没有报错 ...
wyfyan 发表于 2013-1-8 20:49 http://bbs.51testing.com/images/common/back.gif
这个追问问的好啊,忍不住先回答一下
Wscript.CreateObject("WScript.Shell") 这两个Wscript是不一样的。
第一个Wscript是脚本宿主(即windows)的内置对象,相当于直接运行windows的内置函数。你在QTP中直接使用wscript必然报错,因为QTP使用自己的运行环境替代了windows运行环境(绝大多数环境指的都是 运行环境+核心语言,核心语言是vbs它是不会变的,但是运行环境相关的东西却是会变的).
第二个wscript是在windows上安装了脚本运行环境后,自动生成的com对象,vbs这一点和vb一样,是可以直接调用系统中已注册的对象的以及其子类型的,比如createObject("Excel.Application").
总结一下两个wscript的本质区别,第一个是直接使用运行环境的内置对象,而第二个是通过com借口调用系统中已安装(或者说已加载的)的对象。是 拥有 和 借用 的区别。
不知我这样说是否容易理解,如有错误请各位不吝指教~ 那CreateObject("WScript.Shell")为啥没有报错啊
原因上面说过了,QTP中内置了CreateObject函数,这个函数的作用就是返回所调用的外部activex对象。如果还不清楚内置对象和内置函数的区别,可以看看QTP的步骤生成器Step Generator,Utility Objects是内置对象,这里面你找不到WScript对象,Functions是内置函数,这里你能找到CreateObject。 至于你的CreateObject函数所用的输入参数“WScript.Shell”,表示的是创建什么对象,写法是
服务名.类名
服务名.类名,由activex程序的开发人员自行定义,并注册在操作系统的注册表中,比如“WScript.Shell”你可以在注册表中查找到。
WScript是微软开发的一个activex服务,这个服务下还有其他类,比如network等。 回复 10# xjwldlover
谢谢指教,我得消化消化。刚才百度了一下,有如下解释,
“ WScript.Shell(Windows Script Host Runtime Library)是一个对象,对应的文件是C:\WINDOWS\system32\wshom.ocx,Wscript.shell是服务器系统会用到的一种组件。shell 就是“壳”的意思,这个对象可以执行操作系统外壳常用的操作,比如运行程序、读写注册表、环境变量等。这个对象通常被用在VB或VBS编程中。”
目前我的理解是,WScript.CreateObject("WScript.Shell")是在windows环境下创建一个WScript.Shell对象,而CreateObject("WScript.Shell")是在QTP环境下创建一个WScript.Shell对象。这样理解对吗? 回复 12# 泰然
谢谢指教,我得消化消化,目前功底薄弱,不能完全领悟呀
页:
[1]