好长时间没做过模拟了,据说现在前端技术升级了,模拟也不好做了,没管它。
以前模拟web库是很好用的,但后来因为ie被越来越多的人舍弃,网站兼容性就没考虑ie了,这时候就需要kit了。
kit取网页上的图片就没用ie方便,这是我以前一般的方法
imgScreen = soImage(); //根据id网页上截取验证码 getcode_id = function(id){ var eCodeImg = wb.jQuery(id); x = eCodeImg.offset().left; y = eCodeImg.offset().top ; imgScreen.capture(..mainForm.custom.hwnd,x,y,eCodeImg.width(),eCodeImg.height()); imgScreen.resize(60,20) imgScreen.save("/yzm.jpg"); }
后来发现有人在论坛问,校长提供了方法,当然更科学更好。干脆和我第一种方法都融合一下。
import win.ui; /*DSG{{*/ mainForm = win.form(text="WebKit - 获取img元素的数据";right=1108;bottom=716) mainForm.add( button={cls="button";text="方法1";left=293;top=636;right=407;bottom=690;z=3}; button2={cls="button";text="方法2";left=441;top=637;right=555;bottom=691;z=4}; custom={cls="custom";text="custom";left=20;top=17;right=890;bottom=530;z=2}; picturebox={cls="plus";left=13;top=631;right=255;bottom=694;edge=1;foreRepeat="stretch";transparent=1;z=1} ) /*}}*/ import web.kit.form; import console; var wb = web.kit.form(mainForm.custom); mainForm.show(); wb.go("http://jingang.yto56.com.cn/mdm_2/logout.action#"); wb.wait(); getIMG = function(id){ var img = wb.getEle(id); var canvas = wb.document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0,canvas.width,canvas.height); var base64 = canvas.toDataURL("image/png"); base64 = string.replace(base64,"^data\:image\/(\w+);base64,", ""); import crypt.bin; var bmp = crypt.bin.decodeBase64(base64); console.dump(bmp) return bmp; } //根据id网页上截取验证码 getcode_id = function(id){ import soImage; imgScreen = soImage(); var eCodeImg = wb.jQuery(id); x = eCodeImg.offset().left; y = eCodeImg.offset().top ; imgScreen.capture(..mainForm.custom.hwnd,x,y,eCodeImg.width(),eCodeImg.height()); imgScreen.resize(eCodeImg.width(),eCodeImg.height()); bmp = imgScreen.getBytes("1.bmp") return bmp; } mainForm.button.oncommand = function(id,event){ bmp = getIMG("vildateImg"); mainForm.picturebox.background = bmp; } mainForm.button2.oncommand = function(id,event){ bmp = getcode_id("#vildateImg"); mainForm.picturebox.background = bmp; } //mainForm.picturebox.orphanWindow(); win.loopMessage();