【⾃动化测试】使⽤Java+selenium填写验证码成功登录
  这是我第⼀次发博客,若有问题,请多多指教!
  本次是为了帮忙解决,如果在平时⾃动化遇到有验证码填写的情况,我们如何成功登录情况。
1. 思路:
    ⾸先我们先将验证码复制并保存成⼀个图⽚,然后使⽤tesseract-ocr这个光学软件识别成txt⽂件,接着我们只要读取txt⽂件的内容即可
  2. 使⽤⼯具:
    Eclipse、selenium、⽕狐、log4j、AUTOIT_3.3.14.1、tesseract-ocr
  3. 安装软件
    I. eclipse安装,直接⽹上下载并安装即可
    II.Selenium和log4j,这两个是个jar包,只需要下载下来即可,然后我们建⽴项⽬的时候,可以建⽴⼀个⽂件lib保存起来
    如图:
    如何使⽤这两个jar包?项⽬à右键—>构建路径à配置购置路径à点击添加jarj即可
    III.⽕狐安装,建议默认安装吧。免得到时候在代码还需添加⼀句寻⽕狐的路径
    IV.AUTOIT_3.3.14.1安装,为什么安装这个呢?是为了解决window⾃带的操作,例如保存,因为我需要⽤到另存为图⽚,所以这个可以帮我解决。安装嘛,我是直接⼀直next
    V. tesseract-oc,同理安装,不过需要重启⼀下电脑,它才会把路径写⼊path
1. 解决验证码的步骤
public static void baoCunTuPian(WebDriver driver) throws AWTException, InterruptedException{
//右键点击浏览器的属性autoit
Actions action = new Actions(driver);
System.out.print("右键打开浏览器属性成功\n");
Robot robot = new Robot();
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_DOWN);
System.out.print("移动到查看图像");
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_DOWN);
System.out.print("移动到复制图像" +
"\n");
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_DOWN);
System.out.print("移动到复制图像地址\n");
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_DOWN);
System.out.print("移动到将图像另存为\n");
Thread.sleep(1000);
robot.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(1000);
System.out.print("点击图像弹出另存\n");
robot.keyRelease(KeyEvent.VK_DOWN);//释放向下键,不然在此之前的条⽬将起作⽤
Thread.sleep(1000);
try {
System.out.print("保存图⽚成功\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这段代码分两部分来解读:右键弹出属性和保存图⽚
我们将⿏标的位置指向验证码的图⽚,然后右键点击如图:
然后我们需要到“将图像另存为”
这段代码就是描述我们如何到另存并保存起来
接着,弹出来的另存为的操作就不再是java能够操作的了,我们这时候需要⽤到另外类似VB的脚本语⾔,
于是我们的AUTOIT登场了。
使⽤来定位
然后打开我们的脚本编写⼯具
PS:其实下⾯的那段代码我也不是很懂
本段代码是为了清理我要存在图⽚路径是否存在同名,如果同名先删除同名图⽚
这段代码是将我们另存的图⽚名为a.png,然后保存到c盘。
我们写好了这段代码之后,接着使⽤ctrl+F7,即可将它变为EXE⽂件。如果报病毒,请不要理它,保证百分百没有病毒的。
好了我们接着就需要调⽤我们的脚本。我的脚本名字为,保存在本机的C盘
OK,我们现在就已经把图⽚的保存位置搞定。接着我们需要⽤tesseract-ocr这个软件来识别我们的图⽚内容,使⽤的代码是dos命令,命令如下: c:/a.png c:/a -psm 6
意思是:将C盘下的a.png识别并保存到C盘的a.txt
有些⼈⽤ c:/a.png c:/a  -l 就解决了,我的不知道为何需要⽤-psm 6才能解决

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。