2010-06-02 84 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"); 
相關問題