Python + Selenium + 2Captcha - PullRequest
       85

Python + Selenium + 2Captcha

0 голосов
/ 04 октября 2019

Я пытаюсь разрешить повторную проверку на сайте, используя сервис 2captcha, но всегда возвращает мне ошибку:

Traceback (последний вызов был последним): Файл "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: keys_to_typing (value)})
Файл "C:\ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webelement.py ", строка 633, в _execute возвращает self._parent.execute (команда, params)
Файл" C: \ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 321, в файле execute self.error_handler.check_response (response)
Файл" C: \ Python34 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler ". py ", строка 242, в check_response повысить исключение_класса (сообщение, экран, отслеживание стека)

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 дня пытаюсь решить эту ошибку

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Я думаю, это потому, что оно скрыто. Попробуйте это так:

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

Замените драйвер для GChrome в вашем случае.

0 голосов
/ 05 октября 2019

После вызова, предоставленного pguardiario , сделайте следующее:

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

Это невидимая рекапча, использующая функцию обратного вызова, а имя функции в вашем случае - onSubmit.

...