【自动化测试】使用Java+selenium填写验证码成功登录

摘要:
这一次是为了帮助解决问题。如果在平时的自动化中填写了验证代码,我们如何才能成功登录(=Null){//使用readLine方法每次读取一行result=result+“”+s;}br.close();}捕获{e.printStackTrace();}returnresult;}主方法调用Filefile=newFile//读取文件系统。打印输出;存在的问题:兽人的识别率仍然很低,成功登录的概率还没有超过90%。需要改进的解决方案是训练兽人的识别率

  这是我第一次发博客,若有问题,请多多指教!

  本次是为了帮忙解决,如果在平时自动化遇到有验证码填写的情况,我们如何成功登录情况。

  1. 思路:

    首先我们先将验证码复制并保存成一个图片,然后使用tesseract-ocr这个光学软件识别成txt文件,接着我们只要读取txt文件的内容即可

   2. 使用工具:

    Eclipse、selenium、火狐、log4j、AUTOIT_3.3.14.1、tesseract-ocr

   3. 安装软件

    I. eclipse安装,直接网上下载并安装即可

    II.Selenium和log4j,这两个是个jar包,只需要下载下来即可,然后我们建立项目的时候,可以建立一个文件lib保存起来

    如图:

     【自动化测试】使用Java+selenium填写验证码成功登录第1张

    如何使用这两个jar包?项目à右键—>构建路径à配置购置路径à点击添加jarj即可

     【自动化测试】使用Java+selenium填写验证码成功登录第2张

    III.火狐安装,建议默认安装吧。免得到时候在代码还需添加一句寻找火狐的路径

    IV.AUTOIT_3.3.14.1安装,为什么安装这个呢?是为了解决window自带的操作,例如保存,因为我需要用到另存为图片,所以这个可以帮我解决。安装嘛,我是直接一直next

    V. tesseract-oc,同理安装,不过需要重启一下电脑,它才会把路径写入path

  1. 解决验证码的步骤

publicstaticvoid baoCunTuPian(WebDriver driver) throws AWTException, InterruptedException{

//右键点击浏览器的属性

     Actions action = new Actions(driver);

     action.contextClick(driver.findElement(By.id("ImageButton1"))).build().perform();

     System.out.print("右键打开浏览器属性成功 ");

    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("移动到复制图像" +

             " ");

     Thread.sleep(1000);

    

     robot.keyPress(KeyEvent.VK_DOWN);

     System.out.print("移动到复制图像地址 ");

     Thread.sleep(1000);

    

     robot.keyPress(KeyEvent.VK_DOWN);

     System.out.print("移动到将图像另存为 ");

     Thread.sleep(1000);

    

     robot.keyPress(KeyEvent.VK_ENTER);

     Thread.sleep(1000);

     System.out.print("点击图像弹出另存 ");

    

     robot.keyRelease(KeyEvent.VK_DOWN);//释放向下键,不然在此之前的条目将起作用

     Thread.sleep(1000);

    

     try {

         Runtime.getRuntime().exec("c:\test11.exe");//运行保存

         System.out.print("保存图片成功 ");

     } catch (IOException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();                                        

     }

}

这段代码分两部分来解读:右键弹出属性和保存图片

【自动化测试】使用Java+selenium填写验证码成功登录第3张

我们将鼠标的位置指向验证码的图片,然后右键点击

         如图:

   【自动化测试】使用Java+selenium填写验证码成功登录第4张

         然后我们需要找到“将图像另存为”

        【自动化测试】使用Java+selenium填写验证码成功登录第5张

         这段代码就是描述我们如何找到另存并保存起来

         接着,弹出来的另存为的操作就不再是java能够操作的了,我们这时候需要用到另外类似VB的脚本语言,于是我们的AUTOIT登场了。

   【自动化测试】使用Java+selenium填写验证码成功登录第6张

使用AutoitInfo.exe来定位

 【自动化测试】使用Java+selenium填写验证码成功登录第7张

【自动化测试】使用Java+selenium填写验证码成功登录第8张

然后打开我们的脚本编写工具SciTE.exe

 【自动化测试】使用Java+selenium填写验证码成功登录第9张

PS:其实下面的那段代码我也不是很懂

【自动化测试】使用Java+selenium填写验证码成功登录第10张

本段代码是为了清理我要存在图片路径是否存在同名,如果同名先删除同名图片

 【自动化测试】使用Java+selenium填写验证码成功登录第11张

这段代码是将我们另存的图片名为a.png,然后保存到c盘。

我们写好了这段代码之后,接着使用ctrl+F7,即可将它变为EXE文件。如果报病毒,请不要理它,保证百分百没有病毒的。

 【自动化测试】使用Java+selenium填写验证码成功登录第12张

好了我们接着就需要调用我们的脚本。我的脚本名字为test11.exe,保存在本机的C盘

OK,我们现在就已经把图片的保存位置搞定。接着我们需要用tesseract-ocr这个软件来识别我们的图片内容,使用的代码是dos命令,

命令如下:tesseract.exe c:/a.png c:/a -psm 6

意思是:将C盘下的a.png识别并保存到C盘的a.txt

有些人用 tesseract.exe c:/a.png c:/a  -l 就解决了,我的不知道为何需要用-psm 6才能解决

我们将这条命令保存为.bat格式即可

 【自动化测试】使用Java+selenium填写验证码成功登录第13张

然后,我们用java的Runtime.getRuntime().exec() 这个方法就可以调用。

既然已经保存为文件格式,那么我们就需要来读取文件的内容,读取文件内容的代码,我也不讲述了

publicstatic String txt2String(File file){

        String result = "";

       try{

            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件

            String s = null;

            while((s = br.readLine())!=null){//使用readLine方法,一次读一行

               result = result + " " +s;

        }

        br.close();   

       }catch(Exception e){

            e.printStackTrace();

        }

       return result;

}

主方法调用

File file = new File("c:/a.txt");//读取文件

 System.out.println(txt2String(file)+"a");

存在的问题:orc识别率还是很低,登录成功几率还没有超过90%,有待提高

解决方案:训练orc的识别率(有时间再推出类似相关的文章)

免责声明:文章转载自《【自动化测试】使用Java+selenium填写验证码成功登录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EasyUI-datagrid 对于展示数据进行处理(formatter)通过宿主主机访问部署在虚拟机上的网站下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

list采坑记录一下

List<Integer> cards = Lists.newArrayList(6,10,11,12,21,23,29,30,38,39,42,43,46,51,53,59,60);List<Integer> copyList = Lists.newArrayList();copyList = cards;copyList.rem...

前后端项目对接流程梳理

  课程目标 掌握一个电商网站从设计到上线的整个过程所涉及的流程 具备独立开发一个前端项目的能力 架构设计 前后端完全分离 分层架构 模块化 技术选型 HTMl CSS JS jQery 辅助工具 Webpack NodeJs NPM Shell 效率工具 Sublime Chrome Charles Git 课程安排 //基础框架的搭建 双平台的...

局域网内手机访问电脑网站注意几点

一台Android手机和一台PC电脑,在同一个WiFi局域网内。PC上部署了IIS,可是Android手机无法访问PC上虚拟目录内的网页,如http://192.168.1.100/localhost/index.html(之前可以访问)。这可能是哪出了问题呢? 可能有以下几种可能:                              第一步,先用另...

暴力破解原理与过程详解

渗透测试学习资料 Pentest-Methodologies | 渗透测试方法论 「在线实验」SQL 注入基础原理介绍 「在线实验」Linux 提权实战 | OSCP 备考指南 (专属优惠码 7MaDpzNc) 一、爆破原理 顾名思义,暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞...

Web开发、原生开发、混合开发的区别优势:

  一、Web 应用 Web应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,可以在各种智能手机浏览器上运行。 优点: 支持设备广泛; 较低的开发成本; 可即时上线; 无内容限制; 用户可以直接使用最新版本(自动更新,不需用户手动更新)。 缺点: 表现略差(对联网的要求比较大); 用户体验没那么炫; 图片和动画支持性不...

实验第三期:Vmware NSX for Vsphere(尝鲜)

 实验拓扑图及规划:1.nsx-manager部署2.controller部署3.主机vib模块安装4.VXLAN网络参数配置5.分段Segment ID池配置6.传输区域配置7.逻辑交换机配置8.分布式逻辑路由器配置9.Edge服务网关配置10.路由配置及重发布 《1》Logic Router 《2》Border 《3》VSR 200011.虚拟机加入N...