我正在使用Selenium webdriver(Java)。
我需要测试注册表单,但在提交之前,图像框(验证码)正在出现,但每次执行时它都会被更改。我想知道如何从图像中获取数据(验证码)。
任何人都可以帮助我?
答案 0 :(得分:15)
如果验证码来自您控制的环境,您可能需要实施某种方法,表明您处于测试环境中,并使验证码系统返回已知值或某些预期值的指标。
另一方面,如果验证码来自您控制之外的其他来源,那么您可能很幸运。在那时,你基本上和垃圾邮件发送者在同一条船上,他们正在不断的军备竞赛中编写可以直观地解析验证码的软件。
<强>更新强>
我觉得有必要对问题,答案和评论中提出的想法加以澄清。基本上你正在处理下列情况之一(请注意,当我说'你'时,我指的是你,你的公司,客户等):
1)您的表单,您的验证码系统:如果是这种情况,您最好的解决方案是与您的开发人员合作,为您的验证码添加“测试”模式,返回已知值或页面中的其他信息表示预期值应该是什么。如果您能够使用由您或其他人编写的可以成功“读取”验证码图像的工具,那么您的系统就会崩溃。如果您可以在测试模式下执行此操作,那么阻止其他任何人(垃圾邮件发送者,黑客等)以完全相同的方式绕过您的验证码。
2)您的表格,第三方验证码系统:如果是这种情况,您的最佳解决方案是再次查看系统是否具有您可以使用的某种“测试”模式。我自己没有这些系统的经验,但总的来说,猜测那里的主要系统存在测试方法。 Google搜索 {Captcha System Name}自动化测试应该会返回一些关于如何使用系统进行测试的良好提示。如果没有什么好处,你的下一个赌注就是实现你自己的,内部的,仅测试的虚拟验证码系统,该系统可以处理一些已知值,并使你的验证码提供程序可配置,以便你可以指向test / dev中的测试系统/ etc和你的真实系统。
3)另一种形式,未知的验证码系统:我将在这里做出一个信念的飞跃,并假设这不是你的情况,但为了完整性,我将包括它。如果这是你的情况,你根本就没有测试任何东西,只是出于自己的原因寻求帮助绕过别人的安全机制。如果是这种情况,请在不太谨慎的网站上寻求帮助。答案 1 :(得分:1)
引入了验证码,以防止机器人或自动化代码。没有自动化Captcha代码的选项。
1。您可以给自动化等待一段时间,以便用户可以输入验证码。
<强> 2。如果项目处于测试URL意味着,您可以请求系统管理员和开发人员禁用验证码验证。
可能这可以帮助你,但我不试试这个......
开发人员将为验证码生成一个随机值,他们会将值转换为图像,并将值存储在会话中,以便比较输入的输入与验证码的匹配。
因此,如果可能,您可以获取该会话值并将其作为输入。