My problem is that I have a captcha value inside an HTML element which I can't seem to be able to capture using the find_element()
function.
I have this piece of code
iframe = driver.find_element_by_xpath("//iframe\[@name='reCAPTCHA'\]")
driver.switch_to.frame(iframe)
ID_token = driver.find_element(By.ID,"recaptcha-token").get_attribute('value')
print(ID_token)
Whose purpose is to get the value out of the hidden element containing the captcha token But the code simply dies in these lines without telling me what went wrong
This is the link for the page where the captcha is.
Would appreciate the help.
CodePudding user response:
You need to first switch to the below frame:
//iframe[@title='reCAPTCHA']
and then us execute_script
to inject JS code to get the hidden value.
Code:
driver.maximize_window()
driver.get("https://cadprev.previdencia.gov.br/Cadprev/pages/modulos/dair/consultarDemonstrativos.xhtml")
wait = WebDriverWait(driver, 30)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@title='reCAPTCHA']")))
print('Switched to frame')
script = "return document.getElementById('recaptcha-token').getAttribute('value');";
print(driver.execute_script(script))
Imports:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Output:
Switched to frame
03AGdBq25p6cmSsoDCWUmTX10Z9OyHR3_58_te8n14eXM0VAS8Tdf1LwLit7us0gf3u3c0hYJMSB1m-2a8lNHBMLrOqlKWQECCLopsUwiSmivTkhb-SRmBcHxNrPQdO5DWBEL0LGHCUHCZ4XJfzswQ_hWNp8PdwZLuTaQRZ1l1ecGiZIMbapxSaz0GPrwfbJfbaXIGZFMsDP-7ofnAkhIir_CxULKbOrj8WyJIct4v--aINIiizn2b0lRiTUuqZZAzDmNKysWDfIRXVa2N4jcZq_Hc9FBSx8zmIyMzxhHDxAxrDYXYrIh1GyBx90RDac3iqKi17g4x_c8ohSUicjpUI41fGyHabZAco-fJd6bgCyM-V1itIZmLHZKSePMhM87DrkWA_xf1_RBmNSDnDzhXCUUXLy0iPfNfRBGInVQfnTBcyA0qxvkvnkWDKVHOtsN7cebt9rnVqu767dKTdlngwnv40dy2HpUC5M07jIKGUttFZxEFxrEv6MMuNmJOWzT7HTFCD02_pbTT8mjSVvuJ02KlpXneh38UVLDIucw8eoaarosNYSL8Xgi20hIJu15-Y7YD942SUBDlHS_wMGCRkWfdDOPGgKi3AkWsWIlEpopMWg83OxX1ooYd6AUocqBlx50fupwYiEl_t8DZ8m5-6ZCSFa5iTyCnkOrcnjuVmIlLu1_oxpcr2LgX57G6Dl0XoGrh4NK7FZBpZLevvrkCC-2tW59LwEMCk9Ejx1E_FduBdbUn2MURNUDF_FQIv88mq7Yv_B9sbyTjxfarU42YroCDgOS31ERi0pxPN6oxpF5fmPg7mgnlKzM4hmC1g0cPwWYt3MlVS3Y_dSGoylH2uAv1c9OE6RiPkG_Ae36SjjaV_uarvlfdeQ8203WbLhZDYMwhsVIN-Riw0LIllUH0HZIxRWe3hbURKqh1bdVhJ4WVliY7OquFvm5oororQHGfDGhhqcahkkUfDKEUpEkJ7GFyQngBA1FI1z8oyxhvL31o40vak7nZe2k6dFSvWYzcS6SIrKI7AOM5YMD0Xa1o9JkWzv6ULXrXbO6WWeYo6x28t0TUqjG-FY0S9ySV5BoIDTgMhwGapG8wIwgwsnqFXAAU3zmQHDmA7jkAiXJ87f_m_bZU9LIH2DRzarKsHO9J1WiWHo8G4NMz6BMr0rO-IU2NWsX5BTqxkB8mAnpxcNQyBLm_Zri-WENfCLHjqToVC8nzxvY41Ohx9tAhnOjn5mCVMNyXL3iw27ncWU8bcPd7vLCE0jyn-WrkvijuY8bl6ilny5gAkpu40KnfnlyyQOS95VgDS4gxuzQ4RAlpJOHDD18n_QIvNOEQcarkPFTnpvH2k8KRbEOUJFifWow0u8La36KGwiCwgGIiGHavf0OuqQWuSQwa-OSrNTnp44ajOBpQtyJy7DP4OYGSyFOrw2XF6noL6PTM1Q81OZcfFx50djrPs3NOnnPJicfUu-0KFbeaSwOO6gm_5FTJWM3FM-T9UUOXs-IjvYk3wGEjR6_4XJaDBza4aqo
Process finished with exit code 0