问题描述
winform程序,用webbrowser模拟网页操作,进行删除淘宝店铺中出售中的商品,具体步骤就是1、webbrowser打开登陆淘宝页面,手动登录2、点击winform的按钮,执行删除出售中宝贝的动作。开始模拟操作3、选中要删除的,模拟点击删除按钮4、弹出对话框,“确认删除宝贝?”,一直以来通过在webBrowser1_Navigated事件中,IHTMLDocument2vDocument2=(IHTMLDocument2)webBrowser1.Document.DomDocument;vDocument2.parentWindow.execScript("functionconfirm(str){returntrue}","javascript");来自动确认弹出对话框。最近突然发现不好使了。不是不能屏蔽对话框,而是最后到这步的时候,删除失败了,和点了“取消”操作一样。贴上淘宝出售中的这两个javascript。<buttonclass="kbutton"type="button"onclick="javascript:deleteItem()">删除</button>//删除addbydaotongfunctiondeleteItem(){if(confirmDelete()){document.forms['open'].event_submit_do_delete.value=1;document.getElementById("setVal").value="1";document.forms['open'].submit();}}//删除确认functionconfirmDelete(){if(!isSelected()){alert("请选中要删除的宝贝!");returnfalse;}varids=document.forms['open'].elements['selectedIds'];vartype=typeof(ids.name);if(type!='undefined'){if(ids.checked&&!canDeal(ids.value,1)){returnfalse;}}else{for(i=0;i<ids.length;i++){if(ids[i].checked&&!canDeal(ids[i].value,1)){returnfalse;}}}if(!confirm("确认删除宝贝?")){returnfalse;}returntrue;}试验了网上很多方法,都失败了,比如:增加一个timer,每隔一段时间执行:CloseWin("来自网页的消息","确定");CloseWin("Messagefromwebpage","确定");privatevoidCloseWin(stringwinTitle,stringbuttonTitle){IntPtrhwnd=FindWindow(null,winTitle);if(hwnd!=IntPtr.Zero){//IntPtrhwndText=FindWindowEx(hwnd,0,null,"请设置浏览器的安全级别.启用activeX脚本!");//if(hwndText!=IntPtr.Zero){IntPtrhwndSure=FindWindowEx(hwnd,0,"Button",buttonTitle);if(hwnd!=IntPtr.Zero)SendMessage(hwndSure,0xF5,(IntPtr)0,0);//按她}}}还有就是:webBrowser1.Navigate(newUri(url),false);//wb=webBrowser1.ActiveXInstanceasSHDocVw.WebBrowser;wb.NavigateComplete2+=newDWebBrowserEvents2_NavigateComplete2EventHandler(wb_NavigateComplete2);SHDocVw.WebBrowserwb;mshtml.IHTMLDocument2doc;voidwb_NavigateComplete2(objectpDisp,refobjectURL){doc=wb.Documentasmshtml.IHTMLDocument2;//执行javascript脚本,覆盖系统的confirm函数,直接returntrue,这样调用confirm函数都会执行到确认按钮了,同理可以重写系统中的其他函数doc.parentWindow.execScript("functionconfirm(){returntrue;}","javascript");doc.parentWindow.execScript("functionalert(){}","javascript");//设置为alert为空函数体,就不会挂起javascript代码执行了}这几种方法都可以屏蔽对话框,但是和之前的效果是一样了,确认删除时,好像没有执行删除操作代码或者是点了取消一样。再次声明:我最初的方法是可用的,一切正常,用了两三年了。就是最近突然不好用了。希望哪位能帮助解决,提供宝贵思路也行。只有这点分数了,请不要嫌少。
解决方案
本帖最后由 tao2yue 于 2016-06-09 00:33:55 编辑
解决方案二:
自己消灭0回复
解决方案三:
帮顶!没关注过这方面的内容