2017-05-01 69 views
-1

所以我嘗試發送SMS使用this網站通過Selenium點擊Captcha通過硒總是提出圖片驗證

選擇我的國家和我的手機,我號碼後有這樣的Captcha:因此,與Selenium

enter image description here

我成功點擊此Checkbox但百達得到這個image verification

enter image description here

我試着在這個Checkbox點擊之前放幾個睡覺,但是這個image verification仍然存在。 這種行爲不是通過手動情節發生的,所以我的問題是爲什麼會發生這種情況?

這是怎麼了找到我的元素,然後點擊Captcha複選框:

IWebElement frame = driver.FindElements(By.XPath("//iframe[contains(@src, 'recaptcha')]"))[0]; 
driver.SwitchTo().Frame(frame); 

IWebElement checkbox = Driver.Browser.FindElement(By.CssSelector("div.recaptcha-checkbox-checkmark")); 
checkbox.click(); 

回答

1

這是整點captcha's是機器人做而不是通過某一個點/抓取網頁;當網站對bot的活動存在疑慮時,會出現這種情況,以確保這些圖像顯示在另一側的人身上;這樣只有一個人可以被允許進一步的活動。

當您嘗試手動執行此操作時,您不會獲得這些圖像是因爲您在本地安裝的瀏覽器上進行了驗證,該瀏覽器不斷保存有關您活動的Cookie;但是當您通過Selenium WebDriver啓動同一屏幕時,將啓動一個新的實例並確保該實例/會話是合法的;網站可以要求captcha細節,

但爲了規避這種情況下,你可以試試,你已經回答了問題,使用相同的會話,你可以使用seleniumDesiredCapabilities做到這一點,請谷歌的更多。

+0

好主意。使用保存的Cookie。這應該工作。 – DebanjanB

0

超出硒的一面,使用Sikuli http://www.sikuli.org/點擊按鈕,並做你的東西使用Sikuli的Java Api而不是IDE,並使用相對區域。

所有雖然上面提到的,如果你有開發的範圍也 說話與開發,並從流動關閉驗證碼

+0

你是什麼意思使用Sikuli的Java Api而不是他的IDE並使用相對區域? – user979033

0

進口在你的項目和使用sikuli罐子代碼如下圖所示

package com.test; 
import org.sikuli.script.FindFailed; 
import org.sikuli.script.Screen; 
public class CaptchaCick{ 
public static void main(String[] args) throws FindFailed, InterruptedException { 

// TODO Auto-generated method stub 
Screen s=new Screen(); 
s.find("source.png"); 
s.click(("source.png"); 
System.out.println("Source image found"); 
} 

}

+0

c#的任何解決方案? – user979033