如何使用Selenium绕过Google reCAPTCHA进行测试

时间:2018-05-22 11:11:19

标签: java selenium automated-tests recaptcha

我正在使用Selenium来测试我的基于Spring的Web应用程序。你能否在测试应用程序时建议绕过google reCAPTCHA的解决方案。

我正在此环境中运行自动化测试。因此,手动检查reCAPTCHA的“我不是机器人”是不可能的。

出于测试目的,我在以下位置给出的测试环境中使用测试密钥。

Google reCAPTCHA Testing Key

enter image description here

我使用Angular 5作为我的应用程序的前端。我正在使用ng-recaptcha库在ui中添加reCAPTCHA。

4 个答案:

答案 0 :(得分:6)

我不知道您的确切代码,但您应该能够使用系统属性或某些标志来运行您的服务器,这些标志指示应该禁用reCaptcha并且不首先将其添加到表单中。

答案 1 :(得分:2)

您可以通过在reCAPTCHA中找到复选框的x和y坐标并单击该元素来完成此操作。

WebElement captcha = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/form/div[5]/div"));
        builder.moveToElement(captcha, 50, 30).click().build().perform();

答案 2 :(得分:0)

您应将驱动程序“切换”到iFrame,以准确找到reCaptcha的复选框。 命令:

WebElement iFrame = driver.findElement(By.xpath("xpath_of_reCaptcha_iFrame"));
driver.switchTo().frame(iFrame);

//现在可以立即单击reCaptcha的复选框。

WebElement iFrame_checkbox = 
driver.findElement(By.xpath("xpath_of_reCaptcha_checkbox"));
iFrame_checkbox.click();

答案 3 :(得分:0)

我没有找到任何可行的方法。如果您查看几乎所有 reCAPTCHA 的以下代码

reCAPTCHA dom

  • 第一个有 iframe:你可以切换到它
  • 2nd 有 shadow-root 元素“#document”,我没有找到任何方法来覆盖它。我使用了 querySelector,但对我不起作用。
  • 但是如果您传递 shadow-rootelement "#document",那么您可以单击复选框或此处的第三个黄色标记。

唯一的办法是解决这个问题,我们必须在较低的环境中禁用它并使用自动化进行测试。

<块引用>

如果有人找到合适的方法,请告诉我。