2010-06-02 70 views
0

我在C#中使用Selenium RC我的应用程序在不同的注册页面中有3个Captha图像。我有一个巨大的脚本,我会在夜间运行它(当我离开时)。因此,我觉得如果我能捕获最后显示的验证码图像值并将其存储到一个变量中,以便我可以在相关字段上输入,会更好。可能吗 ?有没有办法获得captcha值并将其存储在一个变量中?

回答

1

有一个隐藏字段(名称不明显)包含验证码中使用的文本的高度加密副本,然后在您的硒测试系统上使用私钥对其进行解码?

0

出于测试目的,您需要以机器可读方式发送验证码值,方法是将其作为附加字段发送。测试完成后,您需要删除该字段。

+0

由于拉朱,但我对我们的生产基地也如常规批处理脚本。需要在每周的时间表中运行此脚本。我不可能在生产现场做到这一点。 – 2010-06-02 10:42:58

+0

我对Selenium不熟悉,所以听起来可能很愚蠢,您可以编写Selenium的脚本,以便它接受来自人的输入,然后自行运行剩余的输入。然后有人需要进入验证码,然后它无人看管 – Raju 2010-06-02 11:41:44

3

验证码不能轻松实现自动化。这就是他们被发明的原因!

唉...您可以使用代码黑客和图像识别模式和脚本。它被称为OCR。 http://en.wikipedia.org/wiki/Optical_character_recognition

我不会写更多关于这个的,因为我不会鼓励其他人剽窃想法。但是......第一:Google是你的朋友。第二:在我的测试环境中,我们使用了具有静态值的验证码。然后在它上线之前,我们删除了为算法重新设置它。

Gergely。

+1

OCR用于测试目的是太不可预测了。 – spacediver 2012-06-12 16:36:22

0

利用类型为'hidden'的'input'标签来处理Captcha。

JavascriptExecutor js = (JavascriptExecutor) driver; 
//Set the captcha values using setAttribute 
js.executeScript("document.getElementsByName('xxxx')[0].setAttribute('value', 'xxxx')"); 
driver.findElement(By.name("xxxx")).sendKeys("xxxx"); 
相关问题