您的位置:程序门 -> vb -> 网络编程



50分:webbrowser控件内网页有脚本弹出框,如何用代码点击弹出框的确定按钮?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


50分:webbrowser控件内网页有脚本弹出框,如何用代码点击弹出框的确定按钮?[已结贴,结贴人:shubo2000]
发表于:2007-12-21 21:30:00 楼主
用webbrowser控件做自动填表提交,到提交这一步了,下面代码在http://www.baidu.com及本地的test.htm上试过可以提交表单,但在我的目的网站应用时报错“对象不支持该属性或方法”
webbrowser1.document.getelementsbytagname("form")(0).submit
 
尝试用.document.getelementbyid("submit").click提交,网站有脚本判断表单内容是否合法并会弹出窗口(“你确定提交吗?”两个按钮)让用户确认一次。用什么代码实现点击webbrowser里弹出来的脚本对话框(模拟一个点击'是'的操作)?

发表于:2007-12-21 23:22:101楼 得分:40
1   getelementsbytagname在只找到一个form的时候会直接返回一个form对象,而不是一个form的集合。你需要判断getelementsbytagname的类型再访问其成员
2   实现idochostshowui::showmessage
发表于:2007-12-22 13:33:502楼 得分:0
谢谢蒋晟
回答1.   webbrowser1.document.getelementsbytagname("form")(0).submit   用于   http://www.baidu.com   这个网页来执行提交时会成功提交,说明此代码可行,但应用于我的目的网页(aspx)时提示“对象不支持该属性或方法”,是否目的网站用某种技术手段限制了此类方式
回答2.实现idochostshowui::showmessage     我马上去baidu学学

问题   :用什么代码实现点击webbrowser里弹出来的脚本对话框(模拟一个点击'是'的操作)?  
发表于:2007-12-22 14:03:073楼 得分:0
1   不是,见上
2   你可以自己调用messagebox
发表于:2007-12-22 23:55:304楼 得分:10
2.应该是要遍历窗口,根据窗口标题来确定这个弹出框,然后遍历这个弹出框的每一个按钮句柄,然后发送sendmessage过去
发表于:2007-12-23 00:33:105楼 得分:0
谢谢蒋晟   :)
问题1.
http://www.pceggs.com/login.aspx
用   webbrowser1.document.getelementsbytagname("form")(0).submit       提交登陆,能够成功登陆
http://www.pceggs.com/play/pg28insert.aspx?lid=97154     (97154是期号会增加)
用   webbrowser1.document.getelementsbytagname("form")(0).submit       提交提示“对象不支持该属性或方法”
用   下面代码能正常提交,分析可能是网站用技术手段作了限制。但引出第二个问题
set   doc   =   webbrowser1.document
for   i   =   0   to   doc.all.length   -   1
if   (lcase(doc.all(i).tagname))   =   "input"   then
if   (lcase(doc.all(i).type))   =   "submit"   then
set   tg   =   doc.all(i)
tg.click
exit   for  

问题2   .代码模拟单击提交按钮后,网页执行脚本   window.confirm("确认您投注?将扣除您"+smoneysum+"个金蛋!")。要求客户确认下注。这时用什么代码执行"点击确认"的操作啊?目前只有用按键精灵来做这个点击工作了。
在网上搜索的资料   实现idochostshowui::showmessage   的例子都是dephi   或者c#的。vb应该怎么实现呢
发表于:2007-12-23 01:58:076楼 得分:0
1   你需要判断getelementsbytagname的类型再访问其成员。getelementsbytagname的返回值可以是一个form对象,也可以是一个form的集合。返回值是form的集合的时候你用etelementsbytagname("form")(0).submit是可以的,但是返回值是一个form对象的时候你这么做就会出对象不支持该属性或方法错误
2   com接口和语言无关。你看看vb怎么实现activex的容器,idochostshowui应该是在你的容器实现ioleclientsite的类里面实现。
发表于:2007-12-24 01:14:407楼 得分:0
乖乖滴个咚
刚刚测试通过,先发了再去确认。。。呼呼。。。。。
webbrowser1.document.parentwindow.EXECscript   ("function       confirm(){return   true;}")
发表于:2007-12-24 01:20:298楼 得分:0


实验成功...oh   yeah......太爽啦。。。
晒两天然后送分,谢谢蒋晟及anticlimax


快速检索

最新资讯
热门点击