web-dev-qa-db-fra.com

Comment cliquer sur le recaptcha à l'aide de sélénium et Java

Pourquoi est-ce que je reçois des erreurs lorsque vous essayez de faire cliquer le pilote sur le bouton RECAPTCHA?

C'est le site où j'essaie de le faire fonctionner: https://rsps100.com/vote/760/

Ceci est mon code actuel jusqu'à présent:

WebElement iframeSwitch = driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/div/div/div[2]/div/form/div/div/div/div/iframe"));
driver.switchTo().frame(iframeSwitch);
driver.findElement(By.cssSelector("div[class=recaptcha-checkbox-checkmark]")).click();
5
alqqu

Invoquer click() sur le reCAPTCHA Cochez la case Comme l'élément est à l'intérieur d'un <iframe> tu dois:

  • Induce webDriverwait pour le FRAMETOBEAVAILABLEANDSWITTITTOIT.
  • Induce webDriverwait pour le elementtobeclickable.
  • Vous pouvez utiliser la solution suivante:

    • Bloc de code:

      public class ReCaptcha_click {
      
          public static void main(String[] args) {
      
              System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
              ChromeOptions options = new ChromeOptions();
              options.addArguments("start-maximized");
              options.addArguments("disable-infobars");
              options.addArguments("--disable-extensions");
              WebDriver driver = new ChromeDriver(options);
              driver.get("https://rsps100.com/vote/760");
              new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[starts-with(@name, 'a-') and starts-with(@src, 'https://www.google.com/recaptcha')]")));
              new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.recaptcha-checkbox-checkmark"))).click();
          }
      }
      
  • Snapshot de navigateur:

    reCaptcha

2
DebanjanB

Cela a fonctionné pour moi. Veuillez noter que j'utilise séléniure. Pour le code de sélénium régulier, regardez la même chose.

    import static com.codeborne.selenide.Selenide.*;

    void recaptchaTest() {

        open("https://rsps100.com/vote/760");

        switchTo().frame($x("//iframe[starts-with(@name, 'a-') and starts-with(@src, 'https://www.google.com/recaptcha')]"));

        $("div.rc-anchor-content").click();

        switchTo().defaultContent();

    }
2
gtiwari333

Voici le code qui devrait fonctionner.

driver.switchTo().frame("a-9wt0e8vkopnm");
driver.findElement(By.xpath("//span[@id='recaptcha-anchor']")).click();
0
supputuri