如何使用 Selenium 和 Java 单击 reCAPTCHA

alq*_*qqu 7 iframe selenium recaptcha selenium-webdriver webdriverwait

为什么在尝试让驱动程序单击 reCAPTCHA 按钮时出现错误?

这是我试图让它工作的网站:https : //rsps100.com/vote/760/

到目前为止,这是我当前的代码:

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();
Run Code Online (Sandbox Code Playgroud)

Deb*_*anB 9

要调用click()验证码 复选框作为元素是内<iframe>您需要:

  • 诱导WebDriverWait用于期望frameToBeAvailableAndSwitchToIt
  • 为所需的elementToBeClickable引入WebDriverWait
  • 您可以使用以下解决方案:

    • 代码块:

      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();
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)
  • 浏览器快照:

    重新验证码

  • 对于我的情况,我必须单击“div.rc-anchor-content”元素 (3认同)