Отправить форму с селеном - PullRequest
0 голосов
/ 25 апреля 2020

Я хотел бы автоматизировать вход на Tidal.com. Я использую сервис от anti-captcha.com, поэтому форма входа защищена с помощью reCaptcha. На самом деле у меня есть код, который не работает. Проблема с повторной проверкой возникает, несмотря на то, что я вставляю антикапчу.

from python_anticaptcha import AnticaptchaClient, NoCaptchaTaskProxylessTask

API_KEY = environ['KEY']
LOGIN = input('Enter login:')
PASSWORD = input('Enter password:')

options = Options()
driver = Chrome(chrome_options=chromeOptions)

# Open Tidal login form
driver.get("https://listen.tidal.com/login")
driver.implicitly_wait(5)

# Enter email
import pdb; pdb.set_trace();
WebDriverWait(driver, 120).until(
    EC.presence_of_element_located(
        (By.XPATH, "//input[@id = 'email']")
    )
).send_keys(LOGIN)

# Extract site-key
site_key = re.search('"recaptchaKey":"(.+?)"', driver.page_source).group(1)

# Solve challenge with help of python-anticaptcha
url=driver.current_url
client = AnticaptchaClient(API_KEY)
task = NoCaptchaTaskProxylessTask(url, site_key)
job = client.createTask(task)
job.join()
response = job.get_solution_response()
print("Received solution", response)

# Inject solution
driver.execute_script("document.getElementById('g-recaptcha-response').innerHTML='{}';".format(response))

# Submit form with login and challenge
driver.find_element(By.XPATH, '//button[contains(@class,"btn-client-primary")]').click()

# Enter password
password=WebDriverWait(driver, 120).until(
    EC.presence_of_element_located(
        (By.ID, "password")
    )
).send_keys(PASSWORD)

# Submit form with password
driver.find_element(By.XPATH, '//button[contains(@class,"btn-success")]').click()

# Success! User logged in!
input('Press ENTER to continue')
driver.find_element(By.XPATH, '//button[contains(@class,"btn-client-primary")]').click()

# Enter password
password=WebDriverWait(driver, 120).until(
    EC.presence_of_element_located(
        (By.ID, "password")
    )
).send_keys(PASSWORD)

# Submit form with password
driver.find_element(By.XPATH, '//button[contains(@class,"btn-success")]').click()

# Success! User logged in!
input('Press ENTER to continue')

Может кто-нибудь дать мне подсказку, чтобы решить проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...