如何使用Selenium WebDriver自动执行“输入验证码”?

评论

如果您可以使CAPTCHA自动执行,那将意味着它是CAPTCHA的非常差的实现。

我觉得您错过了验证码的含义。

您需要使用什么?您是否有一个站点包含一个仍包含CAPTCHA组件的站点,并且仍然希望能够使用Selenium进行测试,可能是通过在测试时选择性地禁用CAPTCHA来实现的?
我认为,您需要非常强大的图像处理算法和SikuliX。硒不适合这个。

他们在使用索尼的CAPTCHA吗?如果是这样,您的问题就微不足道了。 (最糟糕的部分是它仍然存在,并在5年后包含相同的问题。)

#1 楼

您不知道,这就是一个好的验证码背后的全部想法。


因此,根据定义,解决方案不能自动进行:否则,它无法区分计算机和人类,因此无法成为验证码。如何在测试环境中处理CAPTCHA:


如果您需要测试使用CAPTCHA的应用程序,则需要让开发团队构建一个变通方法/后门程序,即仅在测试环境中有效。
使用http://www.deathbycaptcha.com之类的服务,该服务具有API为您返回验证码的文本。他们说,平均响应时间为15秒,结果率为90%左右。听起来像是要尝试的东西。


评论


与其他答案不同,您在这里显示了一个要点:“一个很好的验证码”:许多验证码实现都很容易破解(旧页面,但有很多示例)。当然,完全不建议破坏验证码,但是如果有人因为想要使用一些验证码来防止自动化并且想知道某人如何使其自动化而来到这里,那么知道验证码何时是好是很重要的。

–古斯塔沃·罗德里格斯(Gustavo Rodrigues)
16-2-15在11:35

有一些自动验证码;-)看看我的答案。

– dzieciou
17年1月27日在12:32



#2 楼

我们不能使CAPTCHA自动化,因为它并不意味着要自动化。

如何处理CAPTCHA?


要么要求开发团队寻求解决方法,例如configure在测试环境中,CAPTCHA将始终接受1个特定值。
请开发人员在测试环境中禁用CAPTCHA模块。
如果您使用的是自定义CAPTCHA模块,则可以要求开发人员生成用于测试环境的CAPTCHA生成的API。
您可以要求开发团队在标记中将CAPTCHA代码添加为title,然后您可以访问此标题并跳过CAPTCHA,但只能在测试环境中进行。 />大多数情况下,我们会选择选项1或2。测试在投入生产之前就已删除。

评论


我想强调一下您的所有三点:在测试环境中。这些都不应该放在您的生产环境中,因为否则您将破坏CAPTCHA的整个重点。

–莫妮卡基金的诉讼
16-2-16在20:09



#3 楼

这是一个验证码和一个欺骗它的机器人的示例:



#4 楼

正如其他张贴者所解释的那样,CAPTCHA的全部要点是无法使用我们当前的模式识别程序自动进行识别。即使解决模式识别的AI算法将得到改善,新的CAPTCHA也将得到开发。您将图像发布到服务API,某个国家的廉价劳动力可以在几秒钟内解决他们,然后将其发送回给您。

评论


+1我想给出类似的答案,但是像mturk.com这样的服务似乎不赞成使用人类破坏验证码,但出于测试目的,应该没问题。

– Niels van Reijmersdal
16 Feb 15'在19:32

#5 楼

对于像下面这样的简单验证码,您可以先使用Selenium提取图像,然后将其发送到免费的OCR.space OCR API进行处理。这将返回(Captcha)图像内的文本。



解决简单的验证码以及一般运行图像/视频相关测试的另一个选项是使用Kantu浏览器(如Sikuli,但用于网络浏览器)。它具有内置的OCR功能。

#6 楼

如果要尝试自动执行验证码(例如Google reCAPTCHA),那就不能了。原因很简单,就是经常更新和添加CAPTCHA代码。

您也许可以使使用受限数据库的其他一些验证码自动化。这样的验证码将具有有限数量的代码。您可以以某种方式列出所有可用代码及其ID的列表。我敢肯定他们会有某种独特的身份。拥有该数据后,可以在自动进行数据提取的同时获取被调用的验证码的ID,在列表中搜索并在文本字段中填写与该验证码相关的值。我记得几年前Santhosh Tuppad告诉我的这件事。

要使使用CAPTCHA字段的模块自动化,可以,


请您的开发团队在测试环境中删除CAPTCHA字段。
请他们制作一个类似于CAPTCHA的沙箱,每次都会接受一个输入文本。
让他们制作一个CAPTCHA的工作模型沙箱,其中每次将动态生成CAPTCHA文本,但是相同的文本也将插入到文本字段中,或者您可以通过某种方式来了解生成的文本字段,以便可以将其插入文本字段中。


#7 楼

有75%的时间可以使用工具和服务来完成此任务。这个问题使我想起了一个名为JDownloader的软件,这是一个具有CAPTCHA绕过功能的下载管理器。根据他们在该主题上的讨论,他们除了支持自己的自动OCR工具外,还支持许多服务。

他们使用的一些服务: 9kw.eu-信用兑换服务

Captcha Brotherhood-信用兑换和OCR

ImageTypers-付费解决服务

死亡由Captcha-付费解决,OCR和API操作

其工具JAntiCaptcha,在SearchCode中。

根据您的语言,集成一项或多项服务可能更具挑战性,所以一定要做研究。

#8 楼


如何使用Selenium Web Driver自动执行“输入CAPTCHA”操作?


想必您真的不想测试CAPTCHA功能,只想自动化即可超出应用程序的那部分,以便您可以使用自动化功能测试其余部分。页面的唯一版本,可让您绕过CAPTCHA功能并继续操作。

与开发人员交谈。解释你的困境。请他们提出解决方案。

过去,我让开发人员给我一个“替换”页面进行测试。它省略了验证码,但包含了其他所有内容。

#9 楼

在Selenium中使用验证码的最佳方法是给输入验证码后等待的元素等待时间,手动输入验证码,然后继续进行操作。除非使用了非常复杂的验证码输入,否则无法自动输入验证码。

#10 楼

您可以绕过No CAPTCHA reCAPTCHA-详细信息请参见Google Dev常见问题解答:

https://developers.google.com/recaptcha/docs/faq#what-happens-to-recaptcha-v1

#11 楼

我假设您想创建用于验证CAPTCHA的自动化,并且您熟悉数据库的自动化。在后端,还有一些脚本机制用于将这些代码包装到只能由人识别的配置中。

因此,要使其自动化测试,可以分为两部分,一是自动化仅使用后端验证码数据并将其存储在变量中,并通过使用webDrviver输入验证码块进行验证并传递该验证码挑战。而其他实践则需要验证该验证码以解决其仅以人类可读形式实现的目的,而您需要进行手动测试以进行验证。

#12 楼

我处理CAPTCHA所做的工作是在一个虚拟站点上进行测试,但是CAPTCHA是静态站点。我不同意这里的人所说的删除它,因为他们的网站布局将受到影响。

#13 楼

总结以上内容:


验证码不是重点。您的测试自动化套件