页面自动操作实现

来源:互联网 发布:遗传算法c 实现 编辑:程序博客网 时间:2024/06/06 01:43

程序背景:

有一个在线网站(不方便透露),每20分钟会弹出一个带有验证码的,需要人工输入并点击提交。如下图



程序功能实现:

自动识别验证码并且提交答案。每20分钟以后重复操作。


这中自动操作还是意义重大的。目前很多工作流都是基于B/S的web方式来操作。自动操作和应对验证码可以为我们节省很多的时间。


准备:

环境是windows,所以一开始就定下了使用C#做。比较微软的东西开发起来方便快速。这里主要有两个问题:

1. 自动捕获网页,自动操作网页 

2. 能够识别验证码


我的方法是: 采用watin和tesseract-orc两个开源代码实现。

watIN是一个用来进行web自动化测试的软件。我这里拿来做自动操作网页是可以的。因为我对C#的编程不算是很熟悉。所以没有敢才用C#做好的webbrowser来做自动操作。

tesseract-orc是一个google开源项目,但是资料相对与watIN来说,中文资料要多些,更容易上手。参考http://www.itcast.cn/subject/yzm/index.html(这个网站推广过多,请程序员自行辨识。但是他讲解的方法是正确的


主要代码流程:(由于一些原因不能放全部代码了

while (true){// 如果验证码窗口存在if (!iframeCtrl.isDialogClosed()){// 根据窗口句柄截图Bitmap bitmap = picCapturer.processPic(picCapturer.capture());// 调用tesseract来识别String bmpResult = bmpProcessor.Recognize(bitmap);// 根据识别结果做计算DataTable dt = new DataTable();String answer = dt.Compute(bmpResult, "").ToString();// 正确识别了验证码if (!String.IsNullOrEmpty(bmpResult) && !String.IsNullOrEmpty(answer)){// 回答正确跳出循环if (iframeCtrl.answer(answer))break;// 回答错误,不用手动切换,网页自动切换验证码elsecontinue;}// 无法识别验证码else{// 重新设置一次截图位置// 假如设置位置失败if (setRectangle() == false)break;// 换下一张验证码iframeCtrl.nextPic();}}// 如果不存在验证码窗口则退出识别elsebreak;}

下一步计划:

目前,教研室要实现web签到。签到使用《今目标》。利用watin和tesseract,依然可以实现自动签到的功能。


不过还是先忙忙找工作的事情吧。


原创粉丝点击