页面自动操作实现

程序背景:

有一个在线网站(不方便透露),每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;
			// 回答错误,不用手动切换,网页自动切换验证码
			else
				continue;
		}
		// 无法识别验证码
		else
		{
			// 重新设置一次截图位置

			// 假如设置位置失败
			if (setRectangle() == false)
				break;

			// 换下一张验证码
			iframeCtrl.nextPic();
		}
	}
	// 如果不存在验证码窗口则退出识别
	else
		break;
}

下一步计划:

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


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值