Как нажать на флажок reCaptcha - PullRequest
0 голосов
/ 29 февраля 2020

У меня проблема с расположением правильного поля ввода Xpath / ID, в качестве примера я использую следующий веб-сайт:

https://garden.lovetoknow.com/vegetable-garden/how-ripen-green-tomatoes-off-vine

После открытия затем ссылку прокрутите немного вниз, вы увидите синюю кнопку «написать комментарий», щелкните ее, затем заполните текст и имя, появится reCaptcha пример , я попробовал следующий способ, чтобы установить флажок , но безуспешно. Я был бы очень признателен, если бы кто-нибудь мог дать мне руку на это

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, 10)
    .until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.recaptcha-checkbox-checkmark"))).click();

1 Ответ

0 голосов
/ 01 марта 2020

Кажется, вы были достаточно близко. name из <iframe> т.е. a-x2cp4vfbaqu8 выглядит динамически c, поэтому было бы лучше избежать атрибута name , и вы можете использовать либо из следующих Стратегий локаторов :

  • Использование css_selector:

    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("iframe[src^='https://www.google.com/recaptcha/api2/anchor']")));
    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("span#recaptcha-anchor"))).click();
    
  • Использование xpath:

    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[starts-with(@src, 'https://www.google.com/recaptcha/api2/anchor')]")));
    new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("//span[@id='recaptcha-anchor']"))).click();
    

Ссылки

Вы можете найти пару соответствующих обсуждений в:

...