当我用Selenium解决reCaptcha问题时,如何将令牌插入到reCaptcha中?

问题描述 投票:0回答:2

我从付费服务收到了 reCaptcha 的令牌。现在我尝试将此令牌传递到 reCaptcha 形式。

self.browser.get('https://visa.vfsglobal.com/rus/en/fra/login')

self.browser.find_element(By.ID, 'mat-input-0').send_keys('login')
self.browser.find_element(By.ID, 'mat-input-1').send_keys('password')

self.browser.execute_script("document.getElementById('g-recaptcha-response').style.removeProperty('display');")
self.browser.execute_script(f"document.getElementById('g-recaptcha-response').innerHTML = '{code}'")
self.browser.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="none";')

submit_btn = self.browser.find_element(By.XPATH, "//button[contains(@class, 'mat-focus-indicator')]")
submit_btn.click()

但是我收到“必填字段不能留空”错误。 另外,我尝试了这段代码:

recaptcha_response_element = self.browser.find_element(By.XPATH, '//*[@id="g-recaptcha-response"]')
self.browser.execute_script(f'arguments[0].value = "{code}";', recaptcha_response_element)

这个也有同样的结果。 我能做些什么?请帮忙!

python selenium-webdriver xpath recaptcha
2个回答
0
投票

您尝试过这种方法吗?

  1. 直接使用元素方法设置
recaptcha_response_element.set_attribute("value", code)
  1. 仅使用JS设置
self.browser.execute_script(f'document.getElementById("g-recaptcha-response").setAttribute("value", "{code}"')
  1. 替换js“setAttribute”设置的原始值
self.browser.execute_script('arguments[0].setAttribute("value",arguments[1])',element, code)

对于留空的必填字段,请检查是否缺少其他字段。有时会有未实现的反射数据,因为页面状态操作可以避免触发某些侦听器。


0
投票

你找到答案了吗? 我找到了解决方法。我们可以使用 rucaptcha chrome 扩展来解析验证码。这个扩展添加按钮来解决验证码,我们可以使用selenium点击这个按钮。

© www.soinside.com 2019 - 2024. All rights reserved.