Python + Selenium + 2Captcha



我正在尝试使用 2 验证码服务解决站点中的重新验证码,但总是返回错误:

回溯(最近一次调用(:文件 "C:\Users\pablo\Desktop\selenium\MercBitk.py",第 48 行,在 GChrome.find_element_by_xpath("//*[@id='g-recaptcha-response']"(.send_keys(resp.text[3:](

文件 "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", 479路,send_keys 'value': keys_to_typing(value(}(
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", 633行,_execute 返回 self._parent.execute(command, params(
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", 第 321 行,执行中 self.error_handler.check_response(response(
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", 242号线,check_response 提高exception_class(消息、屏幕、堆栈跟踪(

selenium.common.exceptions.ElementNotInteractableException: Message: 元素不可交互(会话信息:chrome=77.0.3865.90(

但是我没有找到我哪里出错了... 代码正确插入CPF和密码,代码发送验证码并将代码正确接收到2captcha站点,但无法发送...

代码为:

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests
import getpass
import json
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
GChrome = webdriver.Chrome()
GChrome.get('https://www.mercadobitcoin.com.br/conta/login/')
box_login = GChrome.find_element_by_name('cpfcnpj')
box_login.send_keys('my_cpf')
box_pass = GChrome.find_element_by_name('password')
box_pass.send_keys('my_pass')
box_pass.send_keys(Keys.ENTER)
# 2Captcha service
service_key = 'fa...d4' # 2captcha service key 
google_site_key = '6LfIxCoUAAAAAEEW7DQK_gj3pzzeJz82dTW_SMNH' 
pageurl = 'https://www.mercadobitcoin.com.br/conta/login/' 
url = "http://2captcha.com/in.php?key=" + service_key + "&method=userrecaptcha&googlekey=" + google_site_key + "&pageurl=" + pageurl 
resp = requests.get(url)
if resp.text[0:2] != 'OK': 
quit('Service error. Error code:' + resp.text) 
captcha_id = resp.text[3:]
fetch_url = "http://2captcha.com/res.php?key="+ service_key + "&action=get&id=" + captcha_id
for i in range(1, 10):  
time.sleep(5) # wait 5 sec.
resp = requests.get(fetch_url)
if resp.text[0:2] == 'OK':
break 
GChrome.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')
GChrome.find_element_by_xpath("//*[@id='g-recaptcha-response']").send_keys(resp.text[3:]) #ERROR HERE <<<<<<

有人可以帮助我吗?我已经尝试了3天来解决此错误

我认为这是因为它是隐藏的。像这样尝试:

driver.execute_script("""
document.getElementById("g-recaptcha-response").innerHTML = arguments[0]
""", resp.text[3:])

在您的情况下,替代 GChrome 的驱动程序。

pguardiario提供的调用之后,执行以下操作:

driver.execute_script("""
onSubmit(arguments[0])
""", resp.text[3:])

这是使用回调函数的不可见验证码,在您的情况下,函数名称为 onSubmit。

继续 pguardiario 出色的响应,正如你们中的许多人注意到的那样,它填满了文本框,但它没有发送,但是,由于这种情况,我们发现自己现在可以看到文本框,只需提交响应就足够了(它对我有用(:

driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')
driver.execute_script('document.getElementById("g-recaptcha-response").innerHTML = arguments[0]', resp.text[3:])
driver.find_element_by_id("g-recaptcha-response").submit()

相关内容

  • 没有找到相关文章

最新更新