VBS团队请求一个VBS的问题 VBS如何实现暂停脚本?
我做了个简单的VBS脚本,在网页上点击用的,但由于网速等问题脚不会按时间完成,会推迟,在a.SendKeys"{ENTER}"这里往往还没进入下一页,就会执行下一步操作,...
我做了个简单的VBS脚本,在网页上点击用的,但由于网速等问题脚不会按时间完成,会推迟,在a.SendKeys "{ENTER}" 这里往往还没进入下一页,就会执行下一步操作,造成脚本输入错误,我加了个msgbox,脚本可以暂停下来,但出现对话框后不能操作网页,焦点在对话框上,有什么办法即能暂停脚本,又能操作网页,再恢复脚本同步运行。
.....
a.SendKeys "369701668" '这里是账号
WScript.Sleep 1000
a.SendKeys "{ENTER}"
WScript.Sleep 4000
msgbox "完成,请按回车键"
txt=inputbox("输入数字")
select case txt
1
.... 展开
.....
a.SendKeys "369701668" '这里是账号
WScript.Sleep 1000
a.SendKeys "{ENTER}"
WScript.Sleep 4000
msgbox "完成,请按回车键"
txt=inputbox("输入数字")
select case txt
1
.... 展开
4个回答
展开全部
可以参考一下这个
Dim myIE
'建立IE对象
Set myIE=CreateObject("InternetExplorer.application")
'IE是否可视
myIE.Visible=True
'宽度
'myIE.Width =600
'高度
'myIE.Height=300
'X坐标
'myIE.Left=0
'Y坐标
'myIE.Top=0
'是否全屏
'myIE.FullScreen=True
'地址栏是否可见
'myIE.AddressBar=False
'是否显示菜单栏
'myIE.MenuBar=False
'是否显示工具栏
'myIE.ToolBar=False
'IE大小是否可以被改动
'myIE.Resizable=0
'打开网址
myIE.Navigate "www.baidu.com"
'等待IE打开网址完毕
Do While myIE.Busy Or (myIE.READYSTATE <> 4)
'休眠,单位毫秒
Wscript.Sleep 10
Loop
'脚本执行接口, 第二个参数为脚本类型,javascript、vbscript等
'有了脚本接口,其他的页面就都可以用javascript完成了~~
scriptStr = "alert(1)"
myIE.Document.parentWindow.execScript scriptStr, "javascript"
'IE关闭
myIE.quit
'释放对象,清理内存
Set myIE=Nothing
Dim myIE
'建立IE对象
Set myIE=CreateObject("InternetExplorer.application")
'IE是否可视
myIE.Visible=True
'宽度
'myIE.Width =600
'高度
'myIE.Height=300
'X坐标
'myIE.Left=0
'Y坐标
'myIE.Top=0
'是否全屏
'myIE.FullScreen=True
'地址栏是否可见
'myIE.AddressBar=False
'是否显示菜单栏
'myIE.MenuBar=False
'是否显示工具栏
'myIE.ToolBar=False
'IE大小是否可以被改动
'myIE.Resizable=0
'打开网址
myIE.Navigate "www.baidu.com"
'等待IE打开网址完毕
Do While myIE.Busy Or (myIE.READYSTATE <> 4)
'休眠,单位毫秒
Wscript.Sleep 10
Loop
'脚本执行接口, 第二个参数为脚本类型,javascript、vbscript等
'有了脚本接口,其他的页面就都可以用javascript完成了~~
scriptStr = "alert(1)"
myIE.Document.parentWindow.execScript scriptStr, "javascript"
'IE关闭
myIE.quit
'释放对象,清理内存
Set myIE=Nothing
追问
这是第一步打开网页了,后面的是在网页上操作,已经失去控制权了
参考资料: http://hi.baidu.com/%D3%F0%E9%E4%C8%CA/blog/item/1507fbfab7d3bf10a8d311fd.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MsgBox后不能操作网页了吗?只要对话框不是模态的(没有用 vbSystemModal)就应该可以操作网页的吧?
必须找到一个方法用脚本判断下一页是否已完全打开,这样才是最可靠的。 单纯靠VBS恐怕难以做到了,像QTP工具里也是通过Web插件来完成的。
AutoIt里有不少IE Management相关的UDF函数,可以试试在VBS里通过COM object方法调用,如下形式:
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.IE方法
必须找到一个方法用脚本判断下一页是否已完全打开,这样才是最可靠的。 单纯靠VBS恐怕难以做到了,像QTP工具里也是通过Web插件来完成的。
AutoIt里有不少IE Management相关的UDF函数,可以试试在VBS里通过COM object方法调用,如下形式:
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.IE方法
追问
不是MsgBox后不能操作网页
是当MsgBox出现时不能操作网页,必须点确定使BOX消失才能做后续动作
追答
试试用popup呢?
Set WshShell = WScript.CreateObject("WScript.Shell")
BtnCode = WshShell.Popup("完成,请按回车键")
实在不行只能通过写文件的方式了。
msgbox "完成后请重新运行脚本",提示后脚本创建一个文件例如 tmp.txt,然后就退出。
脚本中一开始判断tmp.txt文件是否存在,如果存在的话就直接运行msgbox后的内容。
Const TemporaryFolder = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set myfolder = fso.GetSpecialFolder(TemporaryFolder) ' 获取用户临时目录
myfile = myfolder & "\tmp.txt" ’设置一个临时文件用作标志是第几次执行脚本
If Not fso.FileExists(myfile) Then '文件不存在,第一次执行
.....
a.SendKeys "369701668" '这里是账号
WScript.Sleep 1000
a.SendKeys "{ENTER}"
WScript.Sleep 4000
MsgBox "完成后请再次执行该脚本"
Set ofile = fso.CreateTextFile(myfile, True) ’创建临时文件
Set ofile = Nothing
Else ‘文件存在,第二次执行
txt=inputbox("输入数字")
select case txt
1
....
fso.DeleteFile(myfile) ‘第二次执行后记住删除文件,否则下次运行就不对了
End If
Set myfolder = Nothing
Set fso = Nothing
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以加个判断句 如果网页窗口句柄改变则暂停脚本 句柄恢复则继续!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加WScript.Sleep 1000 就可以了呀
吧时间延长一点点
吧时间延长一点点
追问
这个不是办法呀,时间不在自己的控制内,且一味的加时间效率就低了
难道不能暂停脚本的吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询