关于java+selenium识别验证码的问题

---------## (关于java+selenium识别验证码的问题)

hahahahahahahahahahahahahaha~The first time you write a blog, QAQ

如题,用selenium操作浏览器登录网站,验证码是个头疼的问题,翻遍了网上,大概两种方法,第一种手动登录,然后用找到浏览器中登录的cookie,将cookie添加到chromedriver里,跳过登录页面,参考文章:https://blog.csdn.net/ab_2016/article/details/78427084
这里说明的第二种,把验证码拿到本地识别,然后输入网站文本框,测试了三十多个网站,测试效果比较理想,正确率高达百分85%
@!1,加载chromedriver打开url;// 没什么好说的
j在这里插入图片描述
这里我们拿搜狗推广的后台做个例子;
在这里插入图片描述
@!2,我们需要把验证码存到本地;
说一下selenium找元素的问题,我是用xpath定位的,(网页中的绝对路径)//个人感觉比较好用而且比较方便,最最重要的是,找xpath参数chrome浏览器的开发者模式提供了很大的便利,当然别的浏览器也有,这里我用的是chrome。
F12打开开发者模式,检查元素
在这里插入图片描述
@之后你会在下面看到这个元素的大概位置,选择Copy弹出的选项里有一个Copy XPath;我们选择这个复制出来,CopyXpath://*[@id=“validateCodeImg”],这里要注意的是,chrome复制出来的这个XPath要做一些修改,如果你用的是java,需要将id=后面的双引号改成单引号,不然会报错的,像这样;在这里插入图片描述

@随后我们可以在路径下找到这张验证码;在这里插入图片描述

@!3,发送请求来处理这张验证码
我们需要找一个网站的借口来识别这个验证码;这里我用的是若快打码,官网给出了详细的接入信息,请求返回值有两种,如果用selenium的话,返回txt格式的会好一点;
在这里插入图片描述

1,接口(需要的部分);
在这里插入图片描述

@调用起来挺方便的,
在这里插入图片描述

返回result,拿到这个值;
在这里插入图片描述

**@4,最后我们拿到result,同理找到验证码框的元素,然后sendKeys(result);,最后找到登录按钮元素click();它就OK了。//因为验证码识别有时候会有错误,不能保证每次都正确,所以最好在登录页面取一个固有元素加个判定,来进行控制。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值