Home > OS >  How can I click "invisible" reCAPTCHA buttons using Selenium web automation?
How can I click "invisible" reCAPTCHA buttons using Selenium web automation?

Time:10-09

I am using Python and Selenium to automate this website: Website I am trying to automate

In the first attached image you can see how this website's reCAPTCHA looks like in HTML, compared to other website that is visible in the second image, where a #document can be seen inside the iframe.

Other website example

My intention is to run this program using headless Chrome, so I can't relay in any mouse control functions offered by pyautogui for example.

I've been scratching my head around this problem for a while, so any advice is useful. Thanks!

Edit: after some research I have found that this type of reCAPTCHA that doesn't need to check a "I am not a robot" checkbox is called "invisible reCAPTCHA". The captcha only pops up if the detected activity is suspicious (for example clicking too fast). I have tried adding random waits and movements to mimic human behaviour, but the captcha still appears after some tries. Since I don't think there is a way to avoid the captcha from appearing 100% of the times, the question of how to click the buttons using Selenium's find_element_by_xpath() function remains the same. Leaving this as a note just in case someone finds it useful.

CodePudding user response:

If the position is always fixed, you can use PyAutoGUI to move the mouse and click on it

import pyautogui

pyautogui.click(100, 100) # button coordinates

CodePudding user response:

Since, it is in iframe, we need to move our selenium pointing to iframe and then use your xpath.

driver.switch_to.frame("c-la7g7xqfbit4")
capchaBtn = driver.find_element_by_xpath("(//button[@id='recaptcha-audio-button'])[2]")
  • Related