无法从此站点获取验证码的 ID(使用 python)
Can't obtain Captcha's id from this site (using python)
我的问题是我在 HTML 元素中有一个验证码值,我似乎无法使用 find_element()
函数捕获它。
我有这段代码
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)
其目的是从包含验证码令牌的隐藏元素中获取值
但是代码只是死在这些行中而没有告诉我哪里出了问题
这是验证码所在页面的link。
非常感谢您的帮助。
您需要先切换到以下框架:
//iframe[@title='reCAPTCHA']
然后我们execute_script
注入JS代码得到隐藏值.
代码:
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))
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
输出:
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
我的问题是我在 HTML 元素中有一个验证码值,我似乎无法使用 find_element()
函数捕获它。
我有这段代码
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)
其目的是从包含验证码令牌的隐藏元素中获取值
这是验证码所在页面的link。
非常感谢您的帮助。
您需要先切换到以下框架:
//iframe[@title='reCAPTCHA']
然后我们execute_script
注入JS代码得到隐藏值.
代码:
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))
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
输出:
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