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