点击Captcha via Selenium总是提出图片验证

时间:2017-05-01 06:24:58

标签: c# selenium captcha

所以我尝试通过SMS使用this网站发送Selenium

选择我的国家/地区和我的电话号码后,我有Captcha

enter image description here

因此,Selenium我成功点击此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();

4 个答案:

答案 0 :(得分:2)

这是机器人做的captcha's的全部要点 - 不通过某个点/抓取网页;当网站怀疑机器人活动时会出现这种情况,这样才能确保人类在另一侧显示这些图像;这样只允许人类进一步活动。

当您尝试手动执行此操作时,您不会获得这些图像是因为您在浏览器的本地安装上验证了这一点,这些浏览器会不断保存有关您活动的Cookie;但是当你通过Selenium WebDriver启动同一个屏幕时,会启动一个新的实例并确保实例/会话是合法的;网站可以要求captcha个详细信息,

但是为了规避这种情况,您可以尝试使用已经回答问题的相同会话,您可以使用DesiredCapabilities中的selenium执行此操作,请google了解更多信息。

答案 1 :(得分:0)

取出超越硒的一面,使用Sikuli http://www.sikuli.org/点击按钮并做你的东西使用Sikuli的Java Api而不是IDE并使用相对区域。

  

如上所述,如果你也有Dev的范围,   与开发者交谈并关闭流程中的Captcha

答案 2 :(得分:0)

导入你项目中的sikuli jar并使用如下代码

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");
 }

}

答案 3 :(得分:0)

尝试登录到旧的gmail帐户,然后尝试自动单击Recaptcha